有一段時間沒用jquery瞭,今天又碰到這個問題。當時是知道有livejquery可以解決。但是我並不喜歡為瞭這個而另外加載一個。我當時的處理方法是在添加的時候手工綁定事件處理函數。不過新版的jquery已經添加瞭這個功能。我們已經不需要為此煩惱瞭。
參考:http://api.jquery.com/live/
以前我們定義事件,比如為元素定義單擊事件是這樣寫的:
$('input').click(function () {
//處理代碼
});
復制代碼
或
$('.clickme').bind('click', function() {
// Bound handler called.
});
復制代碼
但是這隻能是對已經加載好的元素定義事件,那些後來添加插入的元素則需要另行綁定。即使你使用jquery的clone函數,它並不能將事件也復制(到目前為止我還不清楚它是為什麼這樣定義,是沒法復制還是刻意這麼處理,以防止出現某些異常,這還有待去分析一下jquery的源代碼)。
現在,使用live你可以輕松搞定,
$('.clickme').live('click', function() { // Live handler called. });這樣,你即使在後面動態插入的元素,也會被綁定事件,$('body').append('<p class="clickme">Another target</p>');
摘自 如果有一天…