我有2个文件,文件1(head.tpl
)包含此默认功能操作
$(document).on("click", "#blackout", function(){
closeSkyBox();
});
这是我想要运行的默认操作,它可以正常运行。
在我的第二页上,我想用{:1}}覆盖head.tpl
中的操作:
$(document).on("click", "#blackout", function(){
closeSkyBox(function(){
pev_for_country = '';
});
});
所以,现在当我测试代码时,每个代码都会运行,所以如果我要发出警报(出于测试原因),我会得到两个警告框。如何才能使它只运行第二页中的那个,并禁用head.tpl
中的那个。然后当我不覆盖它在第三页上说head.tpl
中的那个运行?
答案 0 :(得分:5)
看起来你正在寻找jQuery's .off
$(document)
.off('click', '#blackout')
.on('click', '#blackout', function () {
// ...
});
答案 1 :(得分:1)
您可以使用.off删除所有事件处理程序,但是您应该小心:如果其他库添加了您不想删除的事件处理程序,请订阅此事件?此外,如果您在以后添加其他事件处理程序,则会删除它。
我认为更好的方法是创建一个可以覆盖的函数:
function blackoutClick() {
closeSkyBox();
}
设置点击处理程序:
$(document).on("click", "#blackout", function(){
blackoutClick();
});
或者,正如保罗在下面的评论中指出的那样,你甚至不需要在匿名函数中包装该处理程序,你可以只使用清理器:
$(document).on("click", "#blackout", blackoutClick );
然后,在第二页中,您可以修改该功能:
function blackoutClick() {
closeSkyBox(function(){
pev_for_country = '';
});
答案 2 :(得分:0)
我相信另一种方法是将事件设置为null ...
$(document).on('click', '#blackout', null);
在您重新设置第二页之前。