2

最初加载页面时,我有以下click事件设置(工作正常):

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

稍后(发生某些事情后)我想更改此单击以指向另一个名为

secondFunction();

最有效的方法是什么?

我应该解除绑定并再次绑定吗?这可以在一行中完成吗?

4

3 回答 3

4

一种可能的解决方案是使用标志来跟踪是否something已发生

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

//when something occurs
somethingOccurred = true
于 2013-08-18T01:20:44.677 回答
2

另一种选择可能是这样的:

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

然后:

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

http://jsfiddle.net/xZzMD/

于 2013-08-18T01:59:26.827 回答
1

演示

.one()文档。

此代码将在两个功能之间切换。

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);
于 2013-08-18T02:08:49.673 回答