Ne peut pas limiter « return false » à l'élément parent uniquement; voulons que les enfants retournent vrai!

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

  •  23-09-2019
  •  | 
  •  

Question

Ceci est ma première fois ici, donc j'espère que je ne viens pas de trop stupide!

J'ai un problème jQuery très simple: j'ai une base de données générée par la navigation ul-base et je veux des éléments de liste qui contiennent d'autres listes pour basculer montrant les listes contenaient. Les listes (générés) ressemblent à ceci (code Wordpress, ignorer les Japonais):

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

Et voici le jQuery je l'ai écrit à: Tout d'abord, cacher tous les années ul.children à l'intérieur de li.cat-point; En second lieu, appliquer une fonction de bascule et de retour faux uniquement les li.cat-élément qui ont ul.children, en laissant les liens à l'intérieur de leur fonction par défaut.

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

Le problème est, le « return false » est appliqué à se tout à l'intérieur du récipient de li et rien que je ne semble les exclure de la sélection. Tout le monde sait ce que je fais mal?

Merci d'avance

Était-ce utile?

La solution

-t-il.

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

Je devais cibler l'étiquette "a" dans le li, li pas lui-même.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top