2013-08-18 16 views
2

當頁面初始加載,我有以下click事件設置(正常工作):綁定客戶端事件到不同的功能

$('#thisIsTheElement').click(function() { 
    firstFunction(); 
}); 

在以後某個時候(發生的東西后)我想改變這點擊指向不同的功能稱爲

secondFunction(); 

什麼是最有效的方法來做到這一點?

我應該解除綁定嗎?這可以在一行中完成嗎?

回答

4

一個可能的解決方案是使用一個標誌來跟蹤something是否發生

var somethingOccurred = false; 
$('#thisIsTheElement').click(function() { 
    if(somethingOccurred){ 
     secondFunction(); 
    } else { 
     firstFunction(); 
    } 
}); 

//when something occurs 
somethingOccurred = true 
2

另一種選擇可能是這樣的:

$('#thisIsTheElement').on('click', firstFunction); 

及更高版本:

$('#thisIsTheElement').off('click', firstFunction).on('click', secondFunction); 

http://jsfiddle.net/xZzMD/

1

DEMO

.one() documentation。

此代碼將在兩個函數之間切換。

function firstFunction() { 
    alert('First handler: ' + $(this).text()); 
    $(this).one("click", secondFunction); 
} 
function secondFunction() { 
    alert('Second handler: ' + $(this).text()); 
    $(this).one("click", firstFunction); 
} 
$("div").one("click", firstFunction); 

這個代碼將運行firstFunction一次,下一次以後的secondFunction

function firstFunction() { 
    alert('First handler: ' + $(this).text()); 
    $(this).on("click", secondFunction); 
} 
function secondFunction() { 
    alert('Second handler: ' + $(this).text()); 
} 
$("div").one("click", firstFunction);