2010-08-02 144 views
10

如何將事件綁定到在加載腳本時不存在的html元素?我的腳本將事件綁定到尚未創建的DOM元素(jquery)

一部分將這些到DOM:

<a class="btn-remove-item" href="">link</a> 

的問題是我不能只是做:

$(document).ready(function(){ 

    $(".btn-remove-item").click(function(){ 
     this.parentNode.removeChild(this); 
    }); 
}); 

..我認爲,因爲DOM元素不在頁面第一次加載時。

我該如何將事件綁定到myClass?

回答

22

jQuery.live()已被棄用。這裏被接受的答案使用jQuery.on()代替:

$(document).on('click', '#btn-remove-item', function() { 
    this.parentNode.removeChild(this); 
}); 
+0

已更新,自更新以來給出答案 – babonk 2014-01-13 07:32:34

+0

謝謝這個,我可以在我的Angular生成的元素上綁定事件 – Dorian 2014-03-20 17:09:54

1

jQuery.live()是你需要的。

$(document).ready(function(){ 

    $("a.myClass").live('click', function() { 
     this.parentNode.removeChild(this); 
    }); 
}); 

試試看http://jsfiddle.net/mwR8g/

+1

'live()'現在已被棄用。使用'on()'。看到這個答案:http://stackoverflow.com/a/8191450/1738090 – w3bshark 2013-05-15 13:31:45

3

jQuery的live() function做到這一點:

$("#btn-remove-item").live('click', function() { 
    this.parentNode.removeChild(this); 
}); 
+1

生活是不贊同,我怎麼能通過'on'實現它? – 2013-04-23 14:50:01

+2

您可以使用'on',只需通過'document'選擇並使用'on'選擇器參數來獲取正確的元素。例如'$(document).on('click','#someThingCreatedLater',function(event){... do stuff ...});' – tehfoo 2013-05-13 22:27:27

-1
$(document).ready(function(){ 
    $(".btn-remove-item").live('click', function() { 
     this.parentNode.removeChild(this); 
    }); 
}); 

您是需要現場使用。

相關問題