这确实应该通过回调来完成。最接近您所追求的是使用带有一些自定义事件的发布和订阅模型。
为此:
当用户单击是按钮时,触发一个名为 clickedYes 的自定义事件。对“不”做同样的事情
$('#yesbtn').click(function(){
$(document).trigger('clickedYes');
});
$('#nobtn').click(function(){
$(document).trigger('clickedNo');
});
现在我们需要“监听”或订阅这些事件并在上下文中执行适当的操作。
让我们创建一个假设情况:您的用户单击删除并且您想要确认该选择。
如果他们点击是,首先设置你想要发生的事情:
$(document).unbind('clickedYes'); //Unbind any old actions
$(document).bind('clickedYes',function(){
//Code to delete the item
//Hide the popup
});
那么如果他们单击“否”,您希望发生什么:
$(document).unbind('clickedNo'); //Unbind any old actions
$(document).bind('clickedNo',function(){
//Hide the popup and don't delete
});
所以我们设置了监听 clickedYes 或 clickedNo 的操作。现在我们只需要向用户显示弹出窗口,以便他们必须单击是或否。当他们这样做时,他们将触发上述事件。
因此您的 myConfirm() 函数将执行以下操作:
function myConfirm(msg){
//change the message to 'msg'
//Show the popup
}
所以顺序是:
- 将自定义事件的触发器绑定到是和否按钮
- 在提示之前 - 取消绑定任何旧操作并附加您的新操作
- 向用户显示一个弹出窗口,使他们触发您的操作。
这将允许您像这样调用函数 myConfirm('Are you sure'); 这不是你所追求的……但我认为不可能完全按照你的意愿去做。