可能重复:
check window open
我正在使用JQuery根据某些选择更改window.open事件的URL:
$(".class").click(function() {
window.open("http://www.url.com/" + variable);
});
问题在于,每次更改时,我都必须再次调用此单击功能,并且仍会记住旧的window.open事件,并打开两个窗口,然后是3,然后是4等。
我尝试了很多解决方法,但没有任何工作。我尝试只调用一次click函数,然后更改变量,但window.open只会记住原始变量。
有没有办法在添加新的点击事件处理程序之前删除它?
答案 0 :(得分:1)
更改变量不起作用的原因是因为变量范围:匿名函数继承其原始上下文的范围,而不管从那时起发生了什么。你有两个可能的答案:
错误:改为使用全局变量(window.variable
)。
好:将window.open函数设置为变量本身:
WindowOpener = $(".class").click(function() {
window.open("http://www.url.com/" + variable);
});
然后
WindowOpener.unbind();
在您需要时清除之前的事件。 Jamey Sharp的答案也是正确的,并且可能会在您的场景中起作用,除非您对绑定元素做了一些不寻常的事情。
答案 1 :(得分:0)
查看$ .unbind - http://api.jquery.com/unbind/。您可以使用它删除旧事件
答案 2 :(得分:0)
在添加新的click
处理程序之前,您可以删除旧处理程序:
$(".class").unbind('click');