Non è possibile limitare “return false” per unico elemento genitore; vogliono i bambini per tornare vero!

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

  •  23-09-2019
  •  | 
  •  

Domanda

Questa è la mia prima volta qui, quindi spero che non si stacca troppo stupido!

ho un problema molto semplice jQuery: ho una navigazione ul-based banca dati generati e voglio voci di elenco che contengono altre liste per attivare o disattivare mostrando quelle liste contenute. I (generati) liste di simile a questa (codice di Wordpress, ignorare i giapponesi):

<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>

Ed ecco il jQuery ho scritto a: In primo luogo, nascondere tutti ul.children di dentro li.cat-item di; In secondo luogo, applicare una funzione di commutazione e un ritorno falso SOLO di quelli li.cat-item che hanno ul.children, lasciando i collegamenti all'interno alla loro funzione di default.

<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;
    });
});

Il problema è che il "return false" sta ottenendo applicata a tutto all'interno del contenitore e li faccio nulla sembra escludere dalla selezione. Qualcuno sa che cosa sto facendo male?

Grazie in anticipo

È stato utile?

Soluzione

Ha fatto.

<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;
    });
});

ho dovuto indirizzare la "a" tag all'interno della Li, non il Li in sé.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top