从AJAX调用的结果发起的jQuery用户界面对话框
-
21-09-2019 - |
题
我有网页A使用AJAX它调用网页B。 B页将被放置在一个div容器在页面A中的结果(这是页B),还有将启动一个jQuery用户界面对话框代码。在该对话框的股利也是页面B,但是它不工作。我必须把页面A.启动代码,所以,如果我想放在网页B的启动码,我该怎么办?
在启动码:
$('#dialog').dialog({
bgiframe: true,
autoOpen: false,
width: 300,
height: 300,
modal: true,
resizable: false,
buttons: {
'Create an account': function() { },
Cancel: function() { }
},
close: function() { }
});
我已经使用$('div.dialog')
作为选择也尝试(改变了ID为class)和它的工作,但每次我请求网页B(无需重新加载网页A),对话框将繁殖。举一个例子,我第一次请求的网页B,一个对话框将被打开。我请求网页B的第二时间,两个对话框将被打开。
解决方案
您的做法已经不远了,你只是在重复呼叫的对话框每次加载时,这样的破坏前一个,所以不是这样:
$('div.dialog').dialog({ ...options... });
调用此:
$('div.dialog').dialog('destroy').dialog({ ...options... });
此防止多个对话被实例化用于相同元件。或者,您可以检查该元素在已创建的对话框的是,像这样的:
$('div.dialog').filter(function() {
return $(this).closest('.ui-dialog').length === 0;
}).dialog({ ...options... });
此仅在尚未包装在对话框<div class="dialog">
元件创建对话框。
其他提示
您可能用 jQuery的生活功能自定义事件绑定。 您对网页B的通话每次,你会触发你的自定义事件,使新的对话元素可以在事件处理程序绑定。启动代码必须是在不离开页面一个,如果你遵循这个方法。
不隶属于 StackOverflow