2013-09-28 70 views
0

我有一個使用jQuery的問題。jQuery使用事件冒泡和嵌入的div

我使用javascript創建了div,並且這是使用事件冒泡將div與我的jQuery函數綁定的原因。我正在使用標籤主體來開始查找帶有即時創建的productId屬性的div。問題是,當使用productId屬性單擊其中一個div內的div時,請勿運行。只在部分div中不包含其他嵌入式div。 ¿有人可以幫助我嗎? )

這是代碼:

<div class="cartProduct" productId="2"> 
    <div class="names">Patatoes</div> 
    <div class="units">5</div> 
</div> 

$('body').click(function(event) { 
    if($(event.target).is('[productId]')) { 
    ... 
    } 
} 
+0

你知道動態創建的div的類名嗎?他們是否改變,以及你正在使用哪個版本的jquery? – PSL

+0

反正使用事件委託並將事件綁定到您需要的div,以便您可以避免這些檢查。即'$(document).on('click','div [productId]',function(){...})' – PSL

回答

1

嘗試這種情況:

$('body').on('click','[productId]',function(event) { 
    // do something 
}); 

演示:http://jsfiddle.net/L5jg8/

這使用.on() method的委派形式。當發生點擊時,jQuery將檢查它是否在與第二個參數中的選擇器匹配的元素上。 (如果您使用的是舊版本的jQuery,你需要使用.delegate()而不是.on()。如果您使用的是可笑的老版本試試.live()

現有的代碼沒有工作,因爲event.target給你發起事件的DOM元素,即您單擊的最低級別子元素(正如您發現的那樣可能是您要測試的div的子元素之一)。

+0

完美,它解決了我的問題。完善解決方案和解釋。非常感謝你!!! –