2013-01-23 54 views
0

我有上百個jQuery的。對法不工作的動態添加項目

<button class="lb"> 
    <div class="l"></div> 
    <div class="c">2</div> 
    <div class="r"></div> 
</button> 

,當頁面加載和其他人通過JavaScript動態地添加了一些已經在DOM。

當用戶點擊該按鈕時,DIV CLASS =「C」按鈕內內的值應該通過1

加高,我想我能做到,像這樣

$(".lb").on("click", function(event) { 
    $('.c', this).html(parseInt($('.c', this).html()) + 1); 
    $(this).unbind('mouseout'); 
}); 

但是這隻對在pageload上加載的元素起作用,而對新插入的每個JS沒有作用。

我無法找到我失蹤的東西,並會感激任何提示。

謝謝! 拉斐爾

+0

查看[.on()jQuery API文檔頁面](http://api.jquery.com/on/#direct-and-delegated-events)到Direct和Delegated Events部分。它向你展示了兩個例子。 – bdrelling

回答

1

你缺少使用.on()爲代表的幾個概念:

$(' --CONTEXT-- ').on('click', ' -- YOUR ELEMENT -- ', function() { 

}); 

// like-wise to "unbind" using the new methodology 
// you would use .off() 
$(' --CONTEXT-- ').off('click', '-- YOUR ELEMENT --'); 

所以把它放在例如形式:

$(document).on('click', '.lb', function() { }); 

當然,不過這使得上下文(或它會「冒泡」)文件這是太高了。嘗試使用圍繞此項目可能出現的大型家長,它會加快性能。

$('#someParent').on('click', '.lb', function() { }); 
+0

所以這是正確的? (文件).on(「click」,「.lb」,function(event)... –

+0

好的很好,謝謝!! –

+0

你想盡量不要使用'$(document)',那就是什麼'.live()'等用來作爲上下文,嘗試使用一個較低級別的父級,以便在委派事件期間沒有那麼多的冒泡活動 –

3

使用事件代表團的.lbdocument父。正如@Zolton Toth指出,您應該使用off而不是棄用unbind

$(document).on("click", ".lb", function(event) { 
    $('.c', this).html(parseInt($('.c', this).html()) + 1); 
    $(this).off('mouseout'); 
}); 
+1

+將不贊成使用的'.unbind()'改爲'.off()' –

+0

解除綁定將不起作用,沒有任何東西會被綁定 –

+0

哦..那條線是從w處遺留下來的母雞我用另一種方法... thx! –

相關問題