來源:互聯網
上載者:User
關鍵字
javascript
jquery
php
中的代碼塊是描述有一個事件,觸發之後在對應id="tb1"
的標籤後面產生html
;
在網頁中的代碼是這樣的,如
標為2
的是之前就有的,3
是通過上面的事件添加上去的,那麼問題來了;有個name=“plan_bt[]”
的屬性,這個屬性綁定了一個事件,代碼如
為什麼添加後的html代碼,不執行這個事件呢,點擊選擇按鈕沒有反應?剛開始是放在ready
下的,應如何修改?
回複內容:
中的代碼塊是描述有一個事件,觸發之後在對應id="tb1"
的標籤後面產生html
;
在網頁中的代碼是這樣的,如
標為2
的是之前就有的,3
是通過上面的事件添加上去的,那麼問題來了;有個name=“plan_bt[]”
的屬性,這個屬性綁定了一個事件,代碼如
為什麼添加後的html代碼,不執行這個事件呢,點擊選擇按鈕沒有反應?剛開始是放在ready
下的,應如何修改?
請先 登入 後評論
預設排序 時間排序
6 個回答
答案對人有協助,有參考價值 7 答案沒協助,是錯誤的答案,答非所問
採納
綁定事情的時候,如果你這個 DOM 還沒產生,那就不會綁定上也就是說
綁定事件只對綁定當時已經存在的DOM進行了綁定
如果需要對以後添加的 DOM 進行綁定,可以採用委託方式,背後原理是事件冒泡機制,用 jQuery 大概是這樣實現
// 找到父物件,這裡假設是 form$("form:first").on("click", "name='plan_bt[]'", function(e) { var targets = $(e.target); // ...});
name=“plan_bt[]”
是頁面載入完成後才有的,所以之前對這個選取器的任何操作都會失效,因為找不到這個元素啊。
可以使用 on
進行事件委託式的綁定。
$(document).on('click', 'name=“plan_bt[]”', function(){ // your code});
其原理是把事件綁定到了一個已存在的父級元素上(不一定非要 document
),觸發參數1 click
事件後通過 event
對象找到真正的觸發者,如果這個觸發者與參數2 name=“plan_bt[]”
一致,就執行參數3 function(){}
。
建議題主搜尋 事件冒泡 學習一下,另外jQuery最佳實務也可以看一下。
使用each和on就行了
樓主可以試試jquery的livequery外掛程式。
可以考慮使用live或delegate
事件委託原理