jQuery的change事件是用來監聽輸入框的值發生改變時觸發的事件,但是有時候我們會發現在使用change事件時無法生效,下面我們來列舉可能導致change事件無效的幾個原因。
//代碼示例 $('#input').change(function(){ console.log('change事件被觸發了'); });
原因一:事件綁定時機不正確
如果在頁面初始化時綁定change事件,那么當后續動態添加輸入框時,這些輸入框并沒有綁定change事件,所以無法觸發change事件。
//錯誤示例 $('input').change(function(){ console.log('change事件綁定成功'); }); //正確示例 $('body').on('change', 'input', function(){ console.log('change事件綁定成功'); });
原因二:事件委托元素不正確
委托元素指的是在事件委托時綁定了事件的元素,如果委托元素不存在或者委托的元素不是輸入框,則change事件無法觸發。
//錯誤示例 $('#container').on('change', function(){ console.log('change事件委托成功'); }); //正確示例 $('#container').on('change', 'input', function(){ console.log('change事件委托成功'); });
原因三:使用了val()方法賦值
如果使用val()方法來修改輸入框的值,那么會觸發change事件,但是如果使用val()方法從后臺獲取數據來賦值,則change事件不會觸發。
//錯誤示例 $('#input').val('新的值'); //正確示例 $('#input').val('新的值').trigger('change');
總之,當遇到change事件無法觸發時,一定要仔細檢查以上幾個原因,定位問題所在。