2010-04-21 76 views
3

我知道live()事件處理與所有其他jQuery事件不同的事件冒泡。 jQuery建議使用'return false',但在我的情況下這是行不通的。jQuery live()和stopPropagation()問題

問題是:

我有一個包含一個錨標記的DIV。

DIV使用live()綁定。每當我點擊這個DIV內的錨標籤時,它就會冒泡並調用DIV的事件。如果我將事件綁定到返回false的A標籤,它將阻止鏈接打開。在這種情況下,stopPropagation()或返回false工作。還有其他選擇嗎?理想情況下,我想保留live()事件。

+0

你使用'event.stopPropagation()'?如果您與我們分享您的代碼,將會有幫助 – munch 2010-04-21 17:16:09

+1

我們可以看到您使用的代碼嗎? – mcgrailm 2010-04-21 17:16:37

回答

5

element.preventDefault();

stopPropagation將停止起泡,而將的preventDefault確保受影響的元素的默認行爲不會觸發。

+0

這很好,謝謝。 – colourandcode 2010-04-21 18:22:53

2

這應該工作只要你的錨點href是一個網址,不知道如果它是一個JavaScript方法調用會發生什麼 - 猜測會不會很好。

$("#the-div").live('click', function (e) { 
    var tag = e.target.tagName; 
    if (tag === "A") { 
    window.location.href = e.target.href; 
    return false; 
    } 
    // else do the div click handling 
}); 

好像有可能是一個更優雅的方式來做到這一點,但我沒有線索。