2009-09-20 43 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是不是你在這種情況下所需要的,因爲當容器內任意子控件接收鼠標焦點,導致含有這些隱藏菜單就會被觸發。