有没有办法删除window.open事件?

时间:2012-11-14 00:05:27

标签: javascript jquery onclick

  

可能重复:
  check window open

我正在使用JQuery根据某些选择更改window.open事件的URL:

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

问题在于,每次更改时,我都必须再次调用此单击功能,并且仍会记住旧的window.open事件,并打开两个窗口,然后是3,然后是4等。

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

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

3 个答案:

答案 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');
相关问题