2012-12-05 74 views
1


有些情況下,.on()事件方法不會觸發,但.live()會觸發。
但是,從jQuery 1.7開始,不推薦使用.live()方法。
因此,最好使用.on()方法來附加事件處理程序。.on()方法在某些情況下不會觸發

因此,這裏的問題 - http://jsfiddle.net/rGRdT/2/
你可以看到。一()方法被調用一次,當你點擊按鈕,但是當您單擊剛剛創建的第二個按鈕時,。對()將不叫。

$('#button2').on('click', function() { 
    $('div').append('<input type="button" value="add2" id="button3" />'); 
}); 

您可以在這裏看到 - http://jsfiddle.net/GFCt9/
當您單擊第二個按鈕的.live()方法是完全調用。

$('#button2').live('click', function() { 
    $('div').append('<input type="button" value="add2" id="button3" />'); 
});​ 

所以我怎樣才能使用。對()方法,因此會像上面的例子.live()方法?

回答

3
$('#button2').live('click', function() { 

不等同於

$('#button2').on('click', function() { 

$(document).on('click', '#button2', function() { // you may replace document with something more precise but existing 

如果與ID button2你的元素,當你調用$('#button2').on,你沒有任何約束力不存在。這與live完全不同。您必須在非空集合上撥打on

Sample

+0

謝謝,沒有注意到! – Israelg99

0

你們的榜樣「非工作」的jsfiddle腳本有阻止其工作中的錯誤:在('di'v).on(一個簡單的JavaScript錯誤而導致所有腳本運行。

嘗試your fiddle, updated以查看.on()語法的工作方式與您的預期相同。在你提供的簡單情況下,不需要使用.live(),也不需要新方法.on('event', 'selector', fn)

相關問題