我有一系列JQuery事件,例如,在
下面<script>
$("#target").click(function() {
..
});
$("#anothertarget").mouseout(function() {
...
});
$("#someselector").scroll(function() {
...
});
... other JQuery events
</script>
我如何&#34;解开&#34;来自文档的所有这些事件,所以它们都将停止工作并在以后重新绑定它们而不用硬编码它们?
答案 0 :(得分:1)
你可以做几件事,但无论哪种方式,你都需要为事件设定条件:
您可以创建一个具有条件的事件,该事件将打开或关闭事件。
您可以在条件中设置一个变量为true或false,然后让该变量导致bind或unbind事件。
if(some condition is true){
$("#target").on("click", function() {
});
}
//您的场景可能不完全符合此代码,但您需要具有绑定或取消绑定事件的条件
var temp = true;
if(some condition is true){
$("#target").on("click", function() {
temp = false
});
};
if (temp == false){
$('#target').off("click",function(){
})
};
// JagsSparrow下面的答案也是一个非常好的方法
答案 1 :(得分:0)
您可以创建bindAll
&amp; unBindAll
可以在需要时动态调用它们。
function bindAll(){
$("#target").click(function() {
..
});
$("#anothertarget").mouseout(function() {
...
});
$("#someselector").scroll(function() {
...
});
}
function unBindAll(){
$("#target").off('click');
$("#anothertarget").off('mouseout');
$("#someselector").off('scroll');
}
//To bind function call
bindAll();
//To unbind function call
unBindAll();
修改强>
我们可以存储事件对象,bind
和unbind
如下
var allEvents = {
'#target':{
event:'click',
func:function(){
console.log('click')
}
},
'#anothertarget':{
event:'mouseout',
func:function(){
console.log('mouseout')
}
},
'#someselector':{
event:'scroll',
func:function(){
console.log('scroll')
}
}
}
function bindUnbindAll(isBind){
for(var selector in allEvents){
// Here we can carefully filter some events to bind and unbind
var obj = allEvents[selector];
if(isBind)
$(selector).on(obj.event,obj.func.bind(this));
else
$(selector).off(obj.event);
}
}
//to bind function call
bindUnbindAll(true);
//To unbind function call
bindUnbindAll(false);
答案 2 :(得分:0)
要取消绑定Off
,可以使用unbind
删除该事件,例如:
$('#target').unbind('click');
要绑定
$('#target').bind('click', function() { /* Do stuff */ });
您可以将代码放在函数中以绑定/取消绑定对象上的事件。希望这有帮助!