jQuery点击监听器在'It’不应该

jQuery click listener fires when it's not supposed to

本文关键字:It 不应该 监听器 jQuery      更新时间:2023-09-26

使用下面的代码块,当我第一次按下#transfer-button时,它会发出正确的对话框警报,但当在刷新页面之前执行第二次时,它将继续按顺序,从第一个对话框单击,直到最后一个对话框单击。例如,我按"WIlliam",它会弹出一个对话框,上面写着"WIlliam",然后我按"Lucy",会弹出一条对话框,上面说"WIlliam"。一旦关闭,"Lucy)也会立即弹出。我该如何解决这个问题?

$("#person1").click(function () {
$("#transfer-info").html("Transfer to Lucy.");
$("#transfer-button").click(function () {
    alert("Lucy");
})
})
$("#person2").click(function () {
$("#transfer-info").html("Transfer to William.");
$("#transfer-button").click(function () {
    alert("William");
})
})

切换时,您只需添加另一个事件侦听器,因此最终会有多个事件侦听程序,而这两个侦听程序都会启动。

你可以这样做。

$("#person1").click(function () {
    $("#transfer-button").unbind('click');
    $("#transfer-info").html("Transfer to Lucy.");
    $("#transfer-button").click(function () {
        alert("Lucy");
    });
});
$("#person2").click(function () {
    $("#transfer-button").unbind('click');
    $("#transfer-info").html("Transfer to William.");
    $("#transfer-button").click(function () {
        alert("William");
    });
});

尝试

$("#person1").click(function () {
$("#transfer-info").html("Transfer to Lucy.");
$("#transfer-button").off('click')
$("#transfer-button").click(function () {
    alert("Lucy");
})
})
$("#person2").click(function () {
$("#transfer-info").html("Transfer to William.");
$("#transfer-button").off('click')
$("#transfer-button").click(function () {
    alert("William");
})
})