Javascript 是否有方法删除window.open事件?

Javascript 是否有方法删除window.open事件?,javascript,jquery,onclick,Javascript,Jquery,Onclick,可能重复: 我正在使用JQuery更改window.open事件的URL,具体取决于某些选择: $(".class").click(function() { window.open("http://www.url.com/" + variable); }); 问题是每次更改时,我都必须再次调用此单击函数,旧的window.open事件仍会被记住,并打开两个窗口,然后是3个,然后是4个,以此类推 我已经尝试了很多解决方法,但没有任何效果。我尝试调用click函数一次,然后更改变量,但是

可能重复:

我正在使用JQuery更改window.open事件的URL,具体取决于某些选择:

$(".class").click(function() {
    window.open("http://www.url.com/" + variable);
});
问题是每次更改时,我都必须再次调用此单击函数,旧的window.open事件仍会被记住,并打开两个窗口,然后是3个,然后是4个,以此类推

我已经尝试了很多解决方法,但没有任何效果。我尝试调用click函数一次,然后更改变量,但是window.open将只记住原始变量


有没有办法在添加新的单击事件处理程序之前删除旧的单击事件处理程序?

查看$.unbind--。您可以使用该方法删除旧事件

在添加新的
单击事件处理程序之前,您可以删除旧的事件处理程序:


更改变量不起作用的原因是变量作用域:匿名函数继承其原始上下文的作用域,而不管此后发生了什么。你有两个可能的答案:

错误:请改用全局变量(
window.variable

好:将window.open函数设置为变量本身:

WindowOpener = $(".class").click(function() {
    window.open("http://www.url.com/" + variable);
});
然后

WindowOpener.unbind();

在需要时清除先前的事件。Jamey Sharp的回答也是正确的,除非你对绑定元素做了一些不寻常的事情,否则很可能会在你的场景中起作用。

窗口。open
不是一个事件,你不需要再次调用它,只需更改
变量即可。哇,我想我已经尝试了取消绑定单击,但我想不是因为它起作用。谢谢你的快速和中肯的回答!
WindowOpener.unbind();