在jQuery中,on是一個非常重要的事件綁定函數,可以用來綁定事件和處理事件。但有時候會出現一個奇怪的問題,即on會執行兩次,這在開發中經常會讓人困擾。
造成on執行兩次的原因很多,其中一個常見的原因是因為事件冒泡。當有多個父元素綁定了該事件,事件就會沿著父元素繼續冒泡并執行。這時候,如果不加控制,on事件就會被執行兩次或多次,導致代碼出錯。
$('#parent').on('click', '#child', function() {
console.log('click');
});
上面代碼中,鎖定了一個父元素并在它內部找到一個子元素進行事件綁定,當點擊子元素時,on事件就會被觸發。但如果有多個#parent元素都匹配了這個選擇器,事件就會觸發多次。
為了解決這個問題,需要在on事件中加上一個stopPropagation()方法,來阻止事件向父元素冒泡。代碼如下:
$('#parent').on('click', '#child', function(event) {
event.stopPropagation();
console.log('click');
});
通過加上stopPropagation()方法,事件就不會再向上冒泡,從而避免了事件被執行多次的問題。