jQuery单击侦听器在不应该触发时触发

时间:2013-11-24 19:47:00

标签: javascript jquery dialog popup sequence

使用以下代码块,当我第一次按#transfer-button时,它会使用正确的对话框进行警报,但在刷新页面之前第二次执行时,会在第一个对话框中继续排序,直到单击最后一个对话框。例如,我按下“WIlliam”,它会出现一个对话“威廉”,然后我按下“露西”并弹出一个对话框,说“威廉”会弹出,然后一旦关闭,“露西”就会立即弹出同样。我该如何解决这个问题?

$("#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");
})
})

2 个答案:

答案 0 :(得分:1)

切换时,您只是添加另一个事件侦听器,因此最终会有多个事件侦听器,并且两个事件都会触发。

你可以这样做。

$("#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");
    });
});

答案 1 :(得分:0)

$("#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");
})
})