[英]How to deactivate a nested anonymous function in Jquery
我有以下代码:
$('#button-a').click(function(){
$('#button-b').click(function(){
alert('something');
});
});
$('#button-b').click(function(){
// do something
});
单击#button-a后,如何才能停用嵌套的#button-b函数,所以当我单击#button-b时,只有最后一个#button-b函数(未嵌套)被激活,而不是同时激活这两个函数?
使用.on()
和.on()
.off()
事件处理程序尝试此操作。
$('#button-a').click(function(){
$('#button-b').off('click'); //unbind the click event of the #button-b
$('#button-b').click(function(){
alert('something');
});
});
$('#button-b').on('click',function(){
// do something
});
为了做到这一点,您的功能不能是匿名的。 您需要使用off形式,该形式指定要删除的处理程序。 稍微重写一下代码,看起来像这样:
function myFunc() {
alert('something');
}
$("#button-a").click(function() {
$("#button-b").click(myFunc);
});
$("#button-b").click(function() {
// do something
});
要删除处理程序,您可以使用:
$("#button-b").off('click', myFunc);
我不太确定您希望在哪里进行此操作,但是以上代码行将在DOM已加载且myFunc
在范围内的任何地方工作。
如果您确实在这里需要匿名处理程序,则可以为您的任务使用事件名称空间-http: //api.jquery.com/on/
$('#button-b').on('click.nestedClick', function(){ alert('something'); }); // and unbind it at some point: $('#button-b').off('click.nestedClick');
$('#button-a').click(function(){
$('#button-b').trigger('click');
});
$('#button-b').click(function(){
// do something
});
像这样更改代码,以便在您单击按钮-a时调用按钮-b的最后一个函数
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.