当显示文本菜单,执行contextmenu时发生jQuery事件问题?
如果用户点击了文本菜单的,
应该隐藏。
如何实现此功能?
是否有可能监听click_out,并且何时检测到它,隐藏contextmenu并清除该监听器?
当显示文本菜单,执行contextmenu时发生jQuery事件问题?
如果用户点击了文本菜单的,
应该隐藏。
如何实现此功能?
是否有可能监听click_out,并且何时检测到它,隐藏contextmenu并清除该监听器?
您可以在文档中添加一个onclick处理程序,然后检查事件目标是否为菜单。如果点击在菜单上,则不做任何操作,如果不隐藏的话。
jQuery(document).click(function(event) {
if(event.target==$('context-menu'){
$('context-menu').hide();
$(this).unbind('click');
}
}):
您可以绑定到body.click来隐藏它。任何其他元素上的任何点击事件最终都会冒泡到身体上:
$('body').click(function() {
$('#menu').hide();
});
上面的示例假设您的自定义菜单的ID为'menu'。根据需要更换。
根据菜单的工作方式(如果您有嵌套菜单,您可以点击打开),您可能需要将某些东西绑定到其中的点击以停止使用e.stopPropagation()
;
要清除你能做的听众:
$('body').click(function() {
$('#menu').hide();
$(this).unbind('click');
});
下面是一些工作代码片段:
document.onclick = Tree.hideContext;
Tree = {
hideContext: function() {
$("#context").hide();
}
}
我需要明确的是,听众一次墙根。 – user198729 2010-01-14 14:12:43
我刚刚更新了添加解除绑定的答案,只要显示上下文菜单,您可能需要将此单击处理程序附加到文档。 – 2010-01-15 13:53:12