首頁 >web前端 >js教程 >為什麼我的 jQuery `on('change')` 不適用於動態新增的下拉式選單?

為什麼我的 jQuery `on('change')` 不適用於動態新增的下拉式選單?

Barbara Streisand
Barbara Streisand原創
2024-12-15 13:43:12383瀏覽

Why Doesn't My jQuery `on('change')` Work on Dynamically Added Dropdowns?

將 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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn