Asp.net 从对话框内容获取对对话框的引用

Asp.net 从对话框内容获取对对话框的引用,asp.net,jquery,Asp.net,Jquery,以下是我的设想: 我在a页有一个div 当事件发生时(无论我定义什么、单击什么),我都会执行一个div.对话框,设置它的属性并打开它 其中的数据是从async.ajax调用返回的,该调用从url获取数据,并通过调用.ajax回调中的div.html(data)将其附加到div,因此它本质上是通过获取数据(内容)并将其附加到调用对话框的div(“open”)来加载PageB……我不认为这里有什么特别之处 我的问题:在B页中,我如何引用该对话框以便对其执行一些操作?例如,在从.ajax调用返回并通过

以下是我的设想:

  • 我在a页有一个div
  • 当事件发生时(无论我定义什么、单击什么),我都会执行一个div.对话框,设置它的属性并打开它
  • 其中的数据是从async.ajax调用返回的,该调用从url获取数据,并通过调用.ajax回调中的div.html(data)将其附加到div,因此它本质上是通过获取数据(内容)并将其附加到调用对话框的div(“open”)来加载PageB……我不认为这里有什么特别之处
  • 我的问题:在B页中,我如何引用该对话框以便对其执行一些操作?例如,在从.ajax调用返回并通过.html(数据)添加到div的B页内容中,有一个按钮,单击该按钮时,我需要关闭对话框


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

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

    A页:

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

    如果页面B由AJAX加载(与
    相反),那么其中的任何Javascript都将在与页面A其余部分相同的上下文中运行

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


    编辑 如果它位于
    中,则可以使用
    parent
    属性与父帧交互

    具体来说,您可以使用
    parent.$

    在父框架的上下文中运行jQuery代码 例如:

    parent.$('#someId').dialog(...);
    
    由于这使用父页面中的
    $
    函数,因此页面B不需要引用jQuery或jQuery UI。选择器将在父页面中匹配


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

    load与此有什么关系?在从.ajax调用中获取数据后,我使用jQuery.html设置div的内部html…然后打开对话框。您提到了jQuery中的ajax,加载是一种方法,但可能您正在使用类似于
    $.ajax
    $.get
    $.post
    的其他方法。。。但在所有情况下,您都有一个成功回调,您可以在其中注册关闭事件。但我不想在回调时关闭。只有当用户单击“我的对话”内容中的按钮时,页面B的内容才会包装在IFrame中。因此,当我从任何url获取数据时,我将其作为数据的一部分包装在一个IFrame中,这就是div的外观,然后我最后调用我的div.dialog(“open”)。@coffeeaddict:然后您可以使用
    parent
    属性与父页面交互。(例如,
    parent.$(“…”).dialog(…)
    )注意,我还没有测试过。你应该问一个单独的问题。我有,我发誓它昨晚起作用了,然后我开始工作,wtf,它不再起作用了。谁知道…令人沮丧。