使用jqModal网站上的代码,有趣!覆盖:
http://dev.iceburg.net/jquery/jqModal/#examples
(我编辑了代码以使用回调函数)
function confirm(msg,callback) {
$('#confirm')
.jqmShow()
.find('p.jqmConfirmMsg')
.html(msg)
.end()
.find(':submit:visible')
.click(function(){
if(this.value == 'yes')
(typeof callback == 'string') ?
window.location.href = callback :
callback();
$('#confirm').jqmHide();
});
}
$().ready(function() {
$('#confirm').jqm({overlay: 88, modal: true, trigger: false});
// trigger a confirm whenever links of class alert are pressed.
$('a.confirm').click(function() {
confirm('About to visit: '+this.href+' !',callbackfunction);
return false;
});
});
function callbackfunction()
{
console.log("callback triggered");
}
问题:每次调用confirm函数时,都会逐步触发回调,所以当我第二次单击时,处理程序会执行2次,第3次,3次,依此类推。
答案 0 :(得分:0)
这是因为每次调用confirm函数时,都会添加一个新的“click”事件处理程序。
答案 1 :(得分:0)
解决方案是在绑定新的更新回调之前,在确认框中取消绑定click事件。在下面的示例中,请注意绑定新回调之前任何绑定的单击事件的confirm()函数和取消绑定。也许他的示例代码应该是:
function confirm(msg,callback) {
$('#confirm')
.jqmShow()
.find('p.jqmConfirmMsg')
.html(msg)
.end()
.find(':submit:visible')
.unbind('click')
.click(function(){
if(this.value == 'yes')
(typeof callback == 'string') ?
window.location.href = callback :
callback();
$('#confirm').jqmHide();
});
}
自您的原始帖子以来已经过去了一段时间,但也许这对未来的某个人有用。 jqModal非常棒。