Não é possível limitar apenas o "retorno falso" ao elemento pai; quer que as crianças retornem verdadeiras!

StackOverflow https://stackoverflow.com/questions/2543321

  •  23-09-2019
  •  | 
  •  

Pergunta

Esta é a minha primeira vez aqui, então espero não ficar muito estúpida!

Eu tenho um problema de jQuery muito simples: tenho uma navegação baseada em UL gerada por banco de dados e quero que os itens da lista que contêm outras listas para alternar mostrando as listas contidas. As listas (geradas) são assim (código do WordPress; ignore os japoneses):

<div class="block first">
<ul class="counts">
    <li class="cat-item cat-item-43">
        <a href="http://localhost/crg/?cat=43" title="View all posts filed under その他制作物">その他制作物</a>
    </li>
    <li class="cat-item cat-item-3">
        <a href="http://localhost/crg/?cat=3" title="View all posts filed under クライアント">クライアント</a>
        <ul class='children'>
            <li class="cat-item cat-item-4">
                <a href="http://localhost/crg/?cat=4" title="View all posts filed under マイクロソフト">マイクロソフト</a>
            </li>
            <li class="cat-item cat-item-9">
                <a href="http://localhost/crg/?cat=9" title="View all posts filed under 夢">夢</a>
            </li>
            <li class="cat-item cat-item-8">
                <a href="http://localhost/crg/?cat=8" title="View all posts filed under 生">生</a>
            </li>
        </ul>
    </li>
</ul>

E aqui está o jQuery para o qual escrevi: primeiro, oculte todos os Ul.Children's Inside Li.cat-item; Segundo, aplique uma função de alternância e um retorno falso apenas aos li.cat-itens que têm ul.children, deixando os links dentro de sua função padrão.

<script type="text/javascript">
$(document).ready(function() {
    var children = $("li.cat-item:has(ul.children)>ul.children").hide();
    $("li.cat-item:has(ul.children)").click(function(){
        $(this).find('ul.children').toggle();
        return false;
    });
});

O problema é que o "Return False" está sendo aplicado a tudo dentro dos Li do contêiner e nada que eu faço parece excluí -los da seleção. Alguém sabe o que estou fazendo de errado?

desde já, obrigado

Foi útil?

Solução

Fez isso.

<script type="text/javascript">
$(document).ready(function() {
    var children = $("li.cat-item:has(ul.children)>ul.children").hide();
    $("li.cat-item:has(ul.children) > a").click(function(){
        $(this).siblings('ul.children').toggle();
        return false;
    });
});

Eu tive que atingir a etiqueta "A" dentro do LI, não o próprio Li.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top