从Dialog内容中获取对话框的引用

时间:2010-04-14 21:16:50

标签: asp.net jquery

这是我的情景:

  1. 我在Page A上有一个div。
  2. 当一个事件发生时(无论我定义什么,点击,无论如何),我做一个div.Dialog,设置它的属性并打开它
  3. 内部数据是从异步.ajax调用返回的,该调用从url中获取数据并通过调用.ajax回调中的div.html(data)将其附加到div,因此它实际上是通过获取数据(内容)并将其附加到调用对话框的div(“打开”)...这里没什么特别的,我不认为。
  4. 我的问题:在页面B中,如何引用对话框以便我可以对其进行一些操作?例如,在我从.ajax调用收到的页面B的内容中,通过.html(数据)添加到div中,有一个按钮,点击后我需要关闭对话框。

    现在我的按钮在对话框内没有工作,因为其中一个关闭了对话框而另一个应该重定向到一个新页面,但现在都不起作用,因为我没有引用它操作它的对话框。所以我需要引用,所以我可以通过一些将驻留在PageB(数据)中的jQuery来关闭对话框。

2 个答案:

答案 0 :(得分:1)

如果页面B由AJAX加载(而不是<iframe>),则其中的任何Javascript都将在与页面A的其余部分相同的上下文中运行。

因此,您可以使用在页面A中使用的相同代码来引用第B页中的对话框 请注意,如果Page B也在其他地方使用,则需要先检查您是否实际在Page A内部运行。 (检查对话框是否存在,或者在页面A中设置了一些变量)


修改

如果它在<iframe>中,您可以使用parent属性与父框架进行交互。

具体来说,您可以使用parent.$在父框架的上下文中运行jQuery代码 例如:

parent.$('#someId').dialog(...);

由于它使用父页面中的$函数,因此页面B不需要引用jQuery或jQuery UI。选择器将在父页面中匹配。

您可以(但不应该)通过编写parent.$('selector', document)

对子页面运行父页面的jQuery代码

答案 1 :(得分:0)

这应该在成功ajax回调的页面A中完成,因为它是页面A,它引用了需要关闭的div

第A页:

$('div.Dialog').load('/pageB', function(data) {
    $('#closeButtonOnPageB').click(function() {
        // ... close dialog
    });
});