实现contextmenu时的jQuery事件问题?

时间:2010-01-14 14:06:34

标签: jquery events

显示上下文菜单时,

如果用户点击了上下文菜单,

应隐藏它。

如何实现此功能?

是否可以侦听click_out,当检测到click_out时,隐藏上下文菜单并清除该侦听器?

3 个答案:

答案 0 :(得分:2)

您可以绑定到body.click以隐藏它。任何其他元素上的任何点击事件最终都会向身体冒泡:

$('body').click(function() {
   $('#menu').hide();
});

上面的示例假设您的自定义菜单的ID为'menu'。根据需要更换。

根据菜单的工作方式(如果您有嵌套菜单,可以点击打开),您可能希望将某些内容与其中的点击绑定,以使用e.stopPropagation()停止活动;

要清除听众,您可以这样做:

$('body').click(function() {
   $('#menu').hide();
   $(this).unbind('click');
});

答案 1 :(得分:1)

您可以在文档中添加onclick处理程序,然后检查事件目标是否为菜单。如果点击在菜单上,则不执行任何操作,如果不隐藏它。

jQuery(document).click(function(event) {
  if(event.target==$('context-menu'){
    $('context-menu').hide();
    $(this).unbind('click');
  }
}):

答案 2 :(得分:0)

以下是一些工作代码的片段:

document.onclick = Tree.hideContext;

    Tree = {
        hideContext: function() {
            $("#context").hide();
        }
    }