色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

jquery on 觸發多次

傅智翔2年前8瀏覽0評論

在開發中,有時我們會需要為一個元素綁定多個事件處理函數。過去我們可以使用jQuery.bind()jQuery.click()等方法,但在 jQuery 1.7 版本之后,推薦使用jQuery.on()方法進行事件綁定。

然而,使用jQuery.on()方法進行多次事件綁定時,可能會遇到一個問題,就是事件被觸發多次。比如下面的代碼:

$('button').on('click', function() {
console.log('clicked');
});
$('button').on('click', function() {
console.log('clicked again');
});

當我們點擊 button 元素時,控制臺會輸出兩個 clicked 和兩個 clicked again。這是因為每次調用jQuery.on()方法都會添加一個新的事件處理函數。

解決這個問題的方法就是使用jQuery.off()方法在每次事件綁定前先解綁所有舊的事件處理函數。修改上面的代碼如下:

$('button').off('click').on('click', function() {
console.log('clicked');
});
$('button').off('click').on('click', function() {
console.log('clicked again');
});

現在每次點擊 button 元素時,控制臺只會輸出一個 clicked 和一個 clicked again。

另外,如果我們需要綁定的事件處理函數需要傳遞參數,可以使用event.data屬性來實現。比如:

$('button').on('click', {param1: 'foo', param2: 'bar'}, function(event) {
console.log(event.data.param1, event.data.param2);
});

在這個例子中,我們在事件處理函數前傳遞了一個包含參數的對象。在事件處理函數中,我們通過event.data屬性獲取這些參數,并打印到控制臺。

總之,使用jQuery.on()方法進行事件綁定時,需要注意事件被觸發多次的問題。如果需要為一個元素綁定多個事件處理函數,建議在每次綁定前先解綁所有舊的事件處理函數。