我有以下功能:
$('#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
的值。这意味着它将在if
和else
块之间交替。请注意,isOkay
变量保留在$("p").click(...)
事件处理程序的范围之外。fiddle