jquery - 对话框同时触发多个事件
问题描述
.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 的新手,对我来说,如果我调用一次函数,它必须产生一个响应。但在我的现实中,它看起来很奇怪!
解决方案
每次调用该dialog
函数时,它都会依次调用,在按钮上on
设置另一个侦听器。因此,下次单击时,它会触发两次。
在函数外部全局设置它们,因此它们只设置一次。
推荐阅读
- python - 是否有可能从 PyBind11 获取数组基础,而不仅仅是视图?
- java - 如何在图表中可视化具有多个级别的java复杂集合对象
- json - 使用 Json 将票证从 VBA 发送到 Jira
- javascript - 如何在不删除原件的情况下复制元素?
- python - 基于文本的游戏的循环中的函数
- azure - 子域下 Azure 上的网站部署
- java - Spring Cloud Gateway 错误:无法注册“tokenRelayGatewayFilterFactory”
- highcharts - 使用 Highcharts 时找不到 Json 文件
- excel - 使用时间戳保存时出现类型不匹配错误
- python - 如何在 Pandas 中展平深度嵌套的 JSON