.on("click")
产生了多个事件,为什么?有人可以向我解释吗?
$("#office_holder_delete").on("click", function (event) {
event.preventDefault();
var $message = "Oops! Something went wrong while processing your request!";
dialog($message, function () {
alert("Yes");
}, function () {
alert("No");
});
});
function dialog(message, yesCallback, noCallback) {
$("#alert_worn").html(message);
$(".alert").css("background-color", "#F00");
$(".alert-content").css("display", "flex");
$("#yes_button").on("click", function () {
$(".alert-content").css("display", "none");
$(".alert").css({"height": "200px"});
$(".alert p").css("text-align", "center");
yesCallback();
});
$("#no_button").on("click", function () {
$(".alert-content").css("display", "none");
$(".alert").css({"height": "200px"});
$(".alert p").css("text-align", "center");
noCallback();
});
}
我希望每一次“单击”都只有一个“是”或“否”,但是如果我下次单击它会产生2次“是”或“否”。如果我第三次单击,它将产生三倍的“是”或“否”。为什么?我不明白。我是jQuery的新手对于我来说,如果我一次调用函数,它必须产生一个响应。但实际上,这看起来很奇怪!
答案 0 :(得分:0)
每次调用dialog
函数时,它依次调用on
,在按钮上设置另一个侦听器。因此,下次单击时,它将触发两次。
在功能之外全局设置它们,因此只能设置一次。