2012-08-29 116 views
3

我遇到了彈出式菜單的問題。我基本上有2個點擊事件,一個是打開一個菜單,如果點擊某個按鈕而另一個點擊事件在document上,則返回false,如果有人點擊頁面上的任何地方但菜單,則意味着關閉菜單。第一次返回false後不要調用第二次點擊事件

在下面的示例中,我不希望在控制檯中看到click on document,但我確實如此。我究竟做錯了什麼?

$('#content .addOptions').live("click",function(){ 
    console.log("click on addoptions") 

    return false; 
}); 


$(document).click(function() { 
    console.log("click on document") 

}); 
+3

是否這樣? http://jsfiddle.net/FMBuc/(我沒有改變任何東西) –

+0

使用on()而不是live() – Lowkase

+0

就是這樣。我之前做過,但由於某種原因,這個腳本不同意。 – Richard

回答

0

您需要防止點擊事件冒泡達到文檔級別,因爲您確實在菜單和包含它的文檔上單擊。所以這樣做:

$('#content .addOptions').on("click",function(e){ 
    e.stopPropagation(); 
    console.log("click on addoptions") 

    return false; 
}); 

還要注意改變使用on方法,而不是live

+1

在jQuery綁定的事件處理程序中返回false與'return false'與執行'e.preventDefault()'和'e.stopPropagation()'相同。另外,'.on()'的味道不等於在問題中使用'.live()'。 –

+0

我發現問題出現在我的JQ版本1.6.4中。但不在以後的版本中,所以我會嘗試升級。謝謝! – Richard

相關問題