我有一个基本的网站导航布局,如下所示:
<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(); });
答案 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();