2012-02-25 112 views
1

也許我只是累了,但我有一個右鍵菜單,我想要關閉時,用戶點擊其他任何地方比菜單。但是當用戶點擊其他東西時,我不知道如何讓它消失。點擊事件時,沒有點擊一個元素

下面是用於顯示菜單代碼:

// If mouse click on was pressed 
$('#content_list table tr').bind('mouseup', function(event) { 
    // if right click 
    if(event.which == 3) { 
     showRightClickMenu(event); 
    } 
    event.preventDefault(); 
    event.stopPropagation(); 
}); 

這是我得到的隱藏菜單

// If mouse click outside document 
$(document).bind('blur', function(event) { 
    hideRightClickMenu(); 
    event.stopPropagation(); 
}); 

// If mouse click not on the menu 
$('*:not(#rightClickMenu *)').bind('mousedown keydown', function(event) { 
    hideRightClickMenu(); 
    event.stopPropagation(); 
}); 

第一綁定檢查文檔和外部的用戶點擊第二個綁定檢查用戶是否單擊除菜單以外的所有內容。 但第二個不真的工作。如果我點擊菜單,菜單被隱藏。

不應該這麼難imo ...任何人有任何想法?

回答

1

嘗試這種方式

$(document.body).bind('click', function() { 
    hideRightClickMenu(); 
}); 

$(window).bind('blur', function() { 
    hideRightClickMenu(); 
}); 
+0

這似乎是做這項工作。謝謝。 – Patrik 2012-02-25 03:26:46

+0

@Patrik也從第二個答案中嘗試一個例子。最近由於IE的一些問題,我用我的例子。例如,焦點在div上的滾動條上點擊失敗。 – Cheery 2012-02-25 03:32:06

0

focusout()事件試着用on(),而不是老bind()。即使有多個子菜單,這也可以工作。 http://jsfiddle.net/elclanrs/jhaF3/1/

// Something like this... 
$('#menu li').on('click', function() { 
    $(this).find('ul').show(); 
}).find('ul').on('focusout', function(){ 
    $(this).hide(); 
}); 
相關問題