2012-06-26 58 views
1

我有這樣jQuery的不看點擊appened對象

$(document).ready(function(){ 
    $(".add").bind ('click', 
     function() 
     { 
      $('.main').append('<div class="add">Add element 2</div>'); 
     }); 
    }); 
</script> 

<div class="main"><div class="add">Add element</div></div> 

當虛擬對象「新增」附加到「主要」,jQuery的不適合點擊反應對他們

+0

請參閱http://api.jquery.com/on/ /「直接和委託事件 」 – biziclop

回答

5

是的,因爲您在創建新元素之前僅將行爲綁定到現有的.add元素。

您需要點擊到。主要元素綁定作爲函數的第二個參數提供的特定選擇。

$('.main').on('click', '.add', function(){ 
    $('.main').append('<div class="add">Add element 2</div>'); 
}); 

真的很直觀。使用您的代碼,您要求找到頁面上的所有添加元素,並將此函數綁定到每個元素。因此後面添加的將不會有此功能的限制。

有了正確的代碼,你說發現的主要元素和功能綁定到它,但只與類。新增一個子元素被點擊時執行的功能。

+1

+1用於花時間解釋問題的真實性。 –

0

代碼請勿使用.bind(),而應使用.on()或者,如果您有jQuery的前1.7版,.delegate()

綁定是一次性動作,它不會偵聽DOM中的新項目。

+1

'.live()'已棄用。如果你要提出'.on()'的代表味道,最好是爲下面的jQuery 1.6提供'.delegate()'。 –

+0

Thx爲修正@RichardNeilIlagan,當我寫下它時,我已經覺得髒兮兮的提.live() – Koesper

+1

編輯答案以反映評論中提到的變化,並更正之前不能使用'.on() 。 –