將 jQuery 的 live() 轉換為 on():出了什麼問題?
在 jQuery 中,live() 方法已被替換為on() 用於事件處理。然而,儘管遷移到 jQuery 1.7 並使用 on('change') 來偵測動態新增的下拉清單中的更改,事件處理程序仍然處於不活動狀態。
解決方案
主要差異在於 on() 處理事件委託的方式。與 live() 將事件處理程序附加到動態建立的元素不同,on() 僅將處理程序綁定到呼叫時存在的元素。
要實現與live() 相同的功能,on( ) 語法應修改如下:
$(document.body).on('change', 'select[name^="income_type_"]', function() { alert($(this).val()); });
這將事件處理程序綁定到文檔正文,這確保即使對於添加的元素也附加了處理程序
或者,為了更有針對性的事件處理,請考慮將處理程序附加到最接近的可能祖先元素。
jQuery 文件明確指出 on() 的行為與其前身不同,強調該事件處理程序僅綁定到現有元素。這解釋了為什麼 on('change') 的初始實作沒有觸發。
以上是為什麼我的 jQuery `on('change')` 不適用於動態新增的下拉式選單?的詳細內容。更多資訊請關注PHP中文網其他相關文章!