为什么我的模态jQuery对话框多次打开?
我想使用jQuery对话框在modal dialog中打开答案表单。 加载页面后,这是第一次,没关系,但在每次点击后,它将打开2^n-1
次! ( n
是点击次数)
像这样的东西:
单击 – >打开对话框(1次) – >关闭对话框
单击 – >打开对话框(2次) – >关闭对话框
单击 – >打开对话框(4次) – >关闭对话框
单击 – >打开对话框(8次) – >关闭对话框
这是代码:
$(function () { $('label.answer').click(function (event) { openInDialog(this, event, 'http://localhost/Questions/Answer/2') }); }); function openInDialog(element, event, target) { event.preventDefault(); var $loading = $(''); var $url = target; var $title = "Title"; var $dialog = $(''); $dialog.empty(); $dialog .append($loading) .load($url) .dialog( { autoOpen: false , title: $title , modal: true , show: 'fade' , hide: 'fade' }); $dialog.dialog('open'); };
在函数外部初始化对话框。 在加载成功之前,您也不应尝试打开对话框。
$(function () { $('label.answer').click(function (event) { openInDialog(this, event, 'http://localhost/Questions/Answer/2') }); }); var $dialog = $('').dialog( { autoOpen: false , modal: true , show: 'fade' , hide: 'fade' }); function openInDialog(element, event, target) { event.preventDefault(); var $loading = $(''); var $url = target; var $title = "Title"; $dialog.empty(); /* this is incorrect $dialog.dialog({ "option", "title",$title})*/ $dialog.dialog("option", "title",$title) .append($loading) .load($url,function(){ $dialog.dialog('open'); }); };