Невозможно ограничить возврат false только родительским элементом;хочу, чтобы дети вернулись истинными!

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

  •  23-09-2019
  •  | 
  •  

Вопрос

Я здесь впервые, поэтому надеюсь, что не выгляжу слишком глупо!

У меня очень простая проблема с jQuery:У меня есть навигация на основе ul, созданная базой данных, и я хочу, чтобы элементы списка, содержащие другие списки, переключали отображение этих содержащихся списков.(Сгенерированные) списки выглядят следующим образом (код WordPress;игнорируйте японцев):

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

И вот jQuery, который я написал:Во-первых, спрячьте все ul.children внутри li.cat-item;Во-вторых, примените функцию переключения и возврат false ТОЛЬКО к тем li.cat-item, у которых есть ul.children, оставив ссылки внутри в их функции по умолчанию.

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

Проблема в том, что «return false» применяется ко всему внутри контейнера li, и ничто из того, что я делаю, похоже, не исключает их из выбора.Кто-нибудь знает, что я делаю неправильно?

заранее спасибо

Это было полезно?

Решение

Сделал это.

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

Мне пришлось ориентироваться на тег «a» внутри li, а не на сам li.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top