单击事件时jQuery目标最近的元素
我在网上找到了一段jQuery代码,它几乎完成了我希望它完成的任务单击事件时jQuery目标最近的元素,jquery,drop-down-menu,toggle,Jquery,Drop Down Menu,Toggle,我在网上找到了一段jQuery代码,它几乎完成了我希望它完成的任务 (function($) { $.fn.toggleMenu = function() { var menu = $(this).find('ul'); menu.hide(); $(this).click(function(e) { e.stopPropagation(); menu.toggle(); }); } }); 我可以这样触发函数: $('li.g
(function($) {
$.fn.toggleMenu = function() {
var menu = $(this).find('ul');
menu.hide();
$(this).click(function(e) {
e.stopPropagation();
menu.toggle();
});
}
});
我可以这样触发函数:
$('li.grouped').toggleMenu();
我的问题是,当有多个下拉菜单时,当我点击一个列表项时,它们都被切换。它应该只切换我单击的li元素下的ul.下拉列表
我尝试过这样的代码:
el.click(function(e) {
e.stopPropagation();
menu.closest('ul.dropdown').toggle();
});
但这没什么用
HTML结构与此类似:
<div class="main-menu">
<ul class="menu">
<li class="grouped menu-item">
<ul class="dropdown">...</ul>
</li>
<li class="grouped menu-item">
<ul class="dropdown">...</ul>
</li>
<li class="menu-item">...</li>
<li class="menu-item">...</li>
<li class="menu-item">...</li>
<li class="menu-item">...</li>
</ul>
</div>
-
…
-
…
有人能告诉我如何修改我的代码,使之成为正确的ul吗
感谢现有代码向下遍历儿童,以查找
ul
s<代码>最近的()以另一种方式向上遍历子体。如果要瞄准的ul
始终是li
的直接子对象,则可以使用以下方法:
$(this).children('ul');
现有代码向下遍历子级以查找
ul
s<代码>最近的()以另一种方式向上遍历子体。如果要瞄准的ul
始终是li
的直接子对象,则可以使用以下方法:
$(this).children('ul');
您可以获取单击元素的子元素,然后切换该子元素
$(this).click(function(e) {
var $item = $(e.target).children();
item.toggle();
});
进一步阅读:您可以获取所单击元素的子元素,然后切换该子元素
$(this).click(function(e) {
var $item = $(e.target).children();
item.toggle();
});
进一步阅读:您的函数在单击的元素中搜索
元素。因此,您要么需要单击正确的元素,要么需要更改您的函数。函数名确实是一个输入错误,我在代码编辑器中没有这样做(使用不同的函数名)。我不认为原始代码有问题。它应该只在您单击的
下切换
。您的函数在您单击的元素中搜索
元素。因此,您要么需要单击正确的元素,要么需要更改您的函数。函数名确实是一个输入错误,我在代码编辑器中没有这样做(使用不同的函数名)。我不认为原始代码有问题。它应该只在您单击的
下切换
。非常简单。谢谢你的帮助!这么简单。谢谢你的帮助!谢谢你的链接,并帮助我。谢谢你的链接,谢谢你的帮助。谢谢。