【发布时间】:2011-10-27 20:14:46
【问题描述】:
我是 jquery 的新手,我正在查看谷歌的代码来创建他们的“更多”按钮。我已经让它在 atm 工作,但使下拉菜单消失的唯一方法是再次单击“更多”按钮。有没有我可以添加的方法来更改它,以便下拉菜单本身之外的任何点击都会关闭它?感谢您的洞察力!
【问题讨论】:
我是 jquery 的新手,我正在查看谷歌的代码来创建他们的“更多”按钮。我已经让它在 atm 工作,但使下拉菜单消失的唯一方法是再次单击“更多”按钮。有没有我可以添加的方法来更改它,以便下拉菜单本身之外的任何点击都会关闭它?感谢您的洞察力!
【问题讨论】:
将点击事件绑定到 html 以捕获任何点击,并使其隐藏菜单
$("html").click(function() {
menu.find('.active').removeClass('active');
});
然后使用 .stopPropagation(); 在菜单的 click 事件上覆盖它
menu.find('ul li > a').bind('click', function (event) {
event.stopPropagation();
【讨论】:
你也可以添加这个,所以用户不必点击
$("body:not(.menu)").hover(function(){ $(".menu").find('.active').removeClass('active');})
【讨论】:
在打开菜单时,创建一个与窗口宽度和高度相同的透明覆盖 div。单击该 div,关闭菜单并销毁该 div。
【讨论】:
您可以在激活特定菜单项时将模糊事件绑定到特定菜单项,然后在触发模糊事件时将其关闭,而不是测试对 html dom 元素的每次点击。替换这几行:
//displaying the drop down menu
$(this).parent().parent().find('.active').removeClass('active');
$(this).parent().addClass('active');
这些:
//displaying the drop down menu
$('.active').removeClass('active');
$(this).parent().addClass('active');
$(this).blur(function() {
$('.active').removeClass('active');
});
【讨论】: