假设您使用 bind()
或 on()
将处理程序绑定(bind)到某个对象,并指定诸如 { color : "red"}
之类的数据>。后来,情况发生变化,您希望使用 { color : "blue"}
触发事件。有没有办法更改此设置,而无需使用 unbind()
或 off()
删除处理程序并与新数据对象重新绑定(bind)?
最佳答案
不,没有办法改变这一点,传入的 eventData 以后无法更改,因为这就是重点,锁定事件处理程序内的数据
var data = {test : 'test'};
$('element').on('click', data, function(e) {
// e.data will always be {test : 'test'}
});
data = {test: 'foo'}; // doesn't matter
这样做的原因是 eventData 旨在用于通常使用闭包的情况,例如
for ( var i = 0; i < 5; i++ ) {
$("button").eq(i).on( "click", { value: i }, function( event ) {
var i = event.data.value;
// now i can be accessed with event.data.value without extra closures
});
}
因此,更改数据的唯一方法是重新绑定(bind)事件,或者如果您需要更改数据,并且您提到触发事件处理程序,并且您正在使用 jQuery 来执行此操作,则最好使用其他方法,您也可以通过在 trigger()
$('element').on('click', function(event) {
var data = event.custom;
});
$('element').trigger({
type: 'click',
custom: {color: 'red'}
});
$('element').trigger({
type: 'click',
custom: {color: 'blue'}
});
关于javascript - 有没有办法在使用 jQuery 绑定(bind)事件后更改 eventData?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23545194/