我有以下功能:

$('#edit').on("click", function () {
    $('#edit').text('click1');
    $('table a').click(function (e) {
        e.preventDefault();
    });
    $('table a').css("cursor", "default");

        }
    });
    $('#edit').click(function () {
        $('#edit').unbind();
        $('#edit-message-placeholder').empty();
        $('#edit').text('click2');
        $("table tbody").sortable("disable");
        $('table a').unbind()
        $('table a').css("cursor", "auto");

    });
});


第一次单击时,我希望它更改div#edit的文本。第二次单击时,它将文本更改为其他内容。第三次单击时,该函数的行为就像第一次单击一样。

我尝试在线查找解决方案,但没有发现任何有用的信息。

最佳答案

问题是您使用的方法不正确。您不需要绑定/取消绑定事件处理程序。您只需要一个在功能上交替的事件处理程序:

的JavaScript

var isOkay = true;
$("p").click(function () {
    if (isOkay) {
        $(this).text("1st click");
    } else {
        $(this).text("2nd click");
    }
    isOkay = !isOkay;
})


的HTML

<p>Click me!</p>


每次单击<p>时,它将执行一个动作,然后切换布尔变量isOkay的值。这意味着它将在ifelse块之间交替。请注意,isOkay变量保留在$("p").click(...)事件处理程序的范围之外。

fiddle

09-19 21:11