jquery子选择器问题

时间:2010-04-09 17:08:20

标签: jquery jquery-selectors

我有一个基本的网站导航布局,如下所示:

    <li class="folder parent_folder">
<a href="#">Some Folder</a>
<ul class="submenu">
    <li class="file"><a href="#">An awesome file</a></li>
    <li class="file"><a href="#">An awesome file</a></li>
    <li class="file"><a href="#">An awesome file</a></li>
    <li class="file"><a href="#">An awesome file</a></li>
    <li class="file"><a href="#">An awesome file</a></li>
    <li class="file"><a href="#">An awesome file</a></li>
</ul>

我在整个网站的页面中都有其中的几个。使用jquery,我试图使它成为当你点击“li.parent_folder”时“ul.submenu”消失,然后当你再次点击“li.parent_folder”时重新出现。我可以做到这一点,但我有一个问题。当我点击“li.parent_folder”时,所有“ul.submenu”消失,而不仅仅是那个孩子。

完成此操作的正确jquery代码是什么? (哦,我在这个项目中也使用jquery ui

我现在拥有的是:

$('li.parent_folder')。click(function(){     $('li.parent_folder&gt; ul.submenu')。hide(); });

2 个答案:

答案 0 :(得分:4)

试试这个

$('li.parent_folder').click(function() {

  // +this+ var refers to the +li+ that was clicked.

  // .children() gets the children of each element in the set of matched elements, optionally filtered by a selector.
  $(this).children('ul.submenu').hide();
});

以下是有关jQuery .children() method

的更多信息

编辑:

根据@ Gumbo的推荐,从.find()更新到.children()的方法

答案 1 :(得分:1)

$没有任何神奇的背景 - 如果你想从某个元素开始寻找,你必​​须告诉它。在偶数处理程序中,this指向处理程序附加到的元素。尝试

$(this).find(">ul.submenu").hide();