jQuery: 重新繫結事件並傳入參數
狀況:Click event 是直接寫入 <a>,所以使用 unbind 並無法解除這個事件,如果需要在這個函數內重新給定參數並且再次呼叫該怎麼做?
//javascript
function abc(x, y){
alert(x + ', ' + y);
}
//html
test
首先要使用 removeAttr 來清除 onclick event:
$(selector).removeAttr('onclick');
再來,利用 bind 可傳入 data object 的特性解決傳遞參數,並使用匿名函數來呼叫:
$(selector).bind('click', {x: 'New X', y: 'New Y'}, function(e){
abc(e.data.x, e.data.y);
});
最後,發揮 jQuery 的特長寫成一列:
$(selector).removeAttr('onclick').bind('click', {x: 'New X', y: 'New Y'}, function(e){ abc(e.data.x, e.data.y); });
搞定收工!
延伸閱讀:
狀況:Click event 是直接寫入 <a>,所以使用 unbind 並無法解除這個事件,如果需要在這個函數內重新給定參數並且再次呼叫該怎麼做?
//javascript
function abc(x, y){
alert(x + ', ' + y);
}
//html
test
首先要使用 removeAttr 來清除 onclick event:
$(selector).removeAttr('onclick');
再來,利用 bind 可傳入 data object 的特性解決傳遞參數,並使用匿名函數來呼叫:
$(selector).bind('click', {x: 'New X', y: 'New Y'}, function(e){
abc(e.data.x, e.data.y);
});
最後,發揮 jQuery 的特長寫成一列:
$(selector).removeAttr('onclick').bind('click', {x: 'New X', y: 'New Y'}, function(e){ abc(e.data.x, e.data.y); });
搞定收工!
延伸閱讀: