我有网页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的通话每次,你会触发你的自定义事件,使新的对话元素可以在事件处理程序绑定。启动代码必须是在不离开页面一个,如果你遵循这个方法。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top