2010-01-14 31 views

回答

1

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

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

我需要明确的是,听众一次墙根。 – user198729 2010-01-14 14:12:43

+0

我刚刚更新了添加解除绑定的答案,只要显示上下文菜单,您可能需要将此单击处理程序附加到文档。 – 2010-01-15 13:53:12

2

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

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

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

根据菜单的工作方式(如果您有嵌套菜单,您可以点击打开),您可能需要将某些东西绑定到其中的点击以停止使用e.stopPropagation();

要清除你能做的听众:

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

下面是一些工作代码片段:

document.onclick = Tree.hideContext; 

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