Mar*_*sar 1 javascript jquery function callback jquery-callback
我为自定义确认框编写了一些代码,该框在按下确认按钮(是按钮)时调用函数并将另一个函数作为参数传递,并将其绑定到具有不同功能的 2 个不同按钮点击作为参数。例如:
$('#button1').click(function() {
callFunction(function() { alert("test"); });
});
$('#button2').click(function() {
callFunction(function() { alert("test2"); });
});
function callFunction(callback) {
//code to display custom confirm box
console.log(callback);
$('.confirm-box .yes-button').click(function() {
callback();
});
}
Run Code Online (Sandbox Code Playgroud)
一切都按预期发生,确认框出现,点击确认按钮时,我执行了一个回调函数,它会提醒“测试”(或“test2”,具体取决于哪个按钮称为确认框)。当我单击发送提醒“test”的函数的 button1 时,问题出现了,然后不是确认我取消它(没有按预期发生),然后单击将 alert("test2") 作为回调函数传递的 button2。现在,一旦我按下 yes 按钮而不是只提示“test2”,我就会同时收到“test2”和“test”提示,即使我写的 console.log 只记录了在那个 button2 时提示“test2”的函数点击。似乎这些回调函数堆积在某个地方,但我不明白在哪里以及为什么。
.click() 函数可以向一个元素添加多个处理程序,我认为这就是这里发生的事情。尝试这个:
// ...
$('.confirm-box .yes-button').unbind('click').click(function() {
callback();
});
Run Code Online (Sandbox Code Playgroud)
这会在应用新的点击处理程序之前删除任何以前的点击处理程序。