2012-11-14 184 views
2

可能重複:
check window open有沒有辦法刪除window.open事件?

我使用jQuery取決於某些選項來改變window.open事件的網址:

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

的問題是每次它改變時,我必須再次調用這個點擊函數,並且舊的window.open事件仍然會被記住,並打開兩個窗口,然後3,然後4等。

我已經嘗試了很多解決方法,沒有任何工作。我試着只調用一次click函數,然後改變變量,但window.open只會記住原始變量。

有沒有辦法在添加新的點擊事件處理程序之前刪除舊的點擊事件處理程序?

+3

'window.open'不是事件 – Phil

+0

您不需要再次調用它,只需更改'variable'。 –

回答

0

添加新click處理程序之前,您可以刪除舊的一個(或多個):

$(".class").unbind('click'); 
+0

哇,我以爲我曾嘗試解除綁定點擊,但我想不是因爲它有效。感謝您的快速和現實的答案! – Chris

0

改變變量的原因不起作用是因爲變量作用域:匿名函數繼承了原始上下文的範圍,不管從那時起發生了什麼。你有兩個可能的答案:

壞:使用全局變量(window.variable)代替。

好:設置window.open函數的變量本身:

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

然後

WindowOpener.unbind(); 

每當你需要清除先前的事件。 Jamey Sharp的回答也是正確的,並且可能會在你的情況下工作,除非你在綁定元素上做了一些不尋常的事情。

相關問題