不能仅将“return false”限制为父元素;希望孩子们回归真实!

时间:2010-03-30 06:53:05

标签: jquery-selectors this

这是我第一次来这里,所以我希望我不要太傻了!

我有一个非常简单的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中; 其次,将toggle函数和return false应用于只有那些有ul.children的li.cat-item,将链接保留在默认函数中。

<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中的所有内容,而我所做的一切似乎都将它们从选择中排除。谁知道我做错了什么?

提前致谢

1 个答案:

答案 0 :(得分:0)

做到了。

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

我必须在li中定位“a”标签,而不是li本身。