为什么我的模态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 = $('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 = $('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'); }); };