最近在使用jquery的onchange方法時(shí),遇到了一些問(wèn)題:該方法無(wú)法觸發(fā)事件。在經(jīng)過(guò)一番研究和嘗試后,我發(fā)現(xiàn)了一些可能的原因和解決方法。
$('selector').on('change', function(){ // do something });
1. 綁定事件的目標(biāo)元素不存在
if($('selector').length){ $('selector').on('change', function(){ // do something }); }
2. 綁定事件的元素是動(dòng)態(tài)添加的
$('#container').on('change', 'selector', function(){ // do something });
3. 綁定事件的元素被隱藏或禁用
$('selector').on('change', function(){ if($(this).is(':hidden') || $(this).is(':disabled')){ return; // 不參與事件 } // do something });
4. 綁定事件的元素是select標(biāo)簽,但option標(biāo)簽是動(dòng)態(tài)添加的
$('selector').change(function(){ // do something }).on('DOMNodeInserted DOMNodeRemoved', 'option', function(){ $('selector').trigger('change'); });
以上是我總結(jié)的可能的原因和解決方法,希望能夠幫到大家。當(dāng)然,還有其他情況也可能導(dǎo)致onchange失效,需要根據(jù)具體情況進(jìn)行排查。