2009-09-20 46 views

回答

-1

你提到blur事件明确,但我不认为这实际上你需要什么,因为div你提到可能将永远不会被聚焦或模糊的上下文菜单。

您应该使用mouseout事件:

假设您的上下文菜单中有 'contextMenuContainer' 的ID,这应该覆盖它:

$('#contextMenuContainer').mouseout(function() { 
    $(this).hide(); 
}); 

更多看到jQuery Events/mouseout文档。

更新:

我想你链接到插件页面上注册鼠标移出事件处理程序,它是射击就好了。我应该注意到它每次更改菜单项时都会触发,因此您需要检查事件目标以确保鼠标实际上已经退出整个菜单。

+0

我试图使用鼠标,但似乎事件没有触发。什么可能会出错? – kratz 2009-09-21 11:43:46

+0

它可能是其他事件在mouseout上触发事件处理程序停止传播事件。你能更具体地说明你正在使用哪个插件吗?我可以找到多个“jquery上下文菜单插件”。 – 2009-09-21 13:28:42

+0

我正在使用来自此链接的插件。 http://www.trendskitchens.co.nz/jquery/contextmenu/ 如何解决事件传播? – kratz 2009-09-21 20:26:12

0

在回调中使用模糊。 虽然没有经过测试。你是否想恢复其他模糊的右键点击功能? 我认为这会更好地执行其他类型的事件。

$("input").blur(function() { 
    window.oncontextmenu = function() { 
     return false; 
    } 
}); 
+0

虽然我意识到他在字面上要求“onblur”,但他所描述的并不是真正的模糊事件。 – 2009-09-20 16:06:48

+0

所以你应该downvote他,而不是我 – 2009-09-20 18:49:38

+0

@Elzo提问的人不应该downvoted,因为他们不完全理解他们问。如果他们这样做了,他们可能不需要首先提出问题。但是,给出错误信息的答案是不同的。我低估了,因为我觉得这个答案是错误的,显然没有花太多精力去真正阅读这个问题(只有标题) – 2009-09-21 13:37:16

1

如果您想知道焦点何时离开容器区域,但没有容器内的子控件触发事件,请使用mouseleave

$('#menu').on('mouseleave', function(){ 
    $(this).hide(); 
}); 

mouseoutblur是不是你在这种情况下所需要的,因为当容器内任意子控件接收鼠标焦点,导致含有这些隐藏菜单就会被触发。