我遇到了off()
和on()
事件绑定到select
下拉列表这个奇怪的问题:
如果我取消绑定然后将change
事件重新绑定到select
下拉列表,我将无法更改显示的下拉列表值。换句话说,即使更改事件被触发,下拉列表中也不会正确更新所选值。
如果我删除off()
部分,只留下与on()
绑定的事件,一切正常,但显然我无法阻止同一事件的绑定多次。
在此处查看实时示例http://jsfiddle.net/z7o11exs/
测试用例:
以下是代码:
//--- This binds the event to the element
function bindEvent(){
$("#myselect").on("change", function(){
console.log("change");
});
}
//--- remove any change event previously added, then rebind it
function rebindEvent(){
$("#myselect").off("change").on("change", function(){
console.log("change");
});
}
提前致谢
答案 0 :(得分:1)
尝试使用namespacing:
//--- This binds the event to the element
function bindEvent(){
$("#myselect").on("change.something", function(){
console.log("change");
});
}
//--- remove any change event previously added, then rebind it
function rebindEvent(){
$("#myselect").off("change.something").on("change", function(){
console.log("change");
});
}
正如@Karl所说,使用命名空间是:
为您的活动命名可让您识别该活动。因此,当使用.off时,您可以将特定事件定位为关闭。
答案 1 :(得分:1)