我有一个jQuery UI对话框工作在我的ASP。NET页面:

jQuery(function() {
    jQuery("#dialog").dialog({
        draggable: true,
        resizable: true,
        show: 'Transfer',
        hide: 'Transfer',
        width: 320,
        autoOpen: false,
        minHeight: 10,
        minwidth: 10
    });
});

jQuery(document).ready(function() {
    jQuery("#button_id").click(function(e) {
        jQuery('#dialog').dialog('option', 'position', [e.pageX + 10, e.pageY + 10]);
        jQuery('#dialog').dialog('open');
    });
});

我的div。

<div id="dialog" style="text-align: left;display: none;">
    <asp:Button ID="btnButton" runat="server" Text="Button" onclick="btnButton_Click" />
</div>

但是btnButton_Click从来没有被调用…我怎么解决这个问题呢?

更多信息:我添加了这段代码来移动div到窗体:

jQuery("#dialog").parent().appendTo(jQuery("form:first"));

但还是没有成功……


当前回答

我只是在创建对话框后添加了以下一行:

$(".ui-dialog").prependTo("form");

其他回答

Robert MacLean给出的答案有99%的正确率。但是,像我这样的人可能需要添加的唯一内容是,每当需要打开这个jQuery对话框时,不要忘记将它附加到parent。像下图:

var dlg = $('#questionPopup')。对话框(“开放”); dlg.parent () .appendTo($(“形式:第一”));

这主要是因为jQuery使用DOM将对话框移到表单标记之外。将其移回表单标签内,应该可以正常工作。您可以通过检查Firefox中的元素来看到这一点。

我知道这是一个老问题,但是对于任何有同样问题的人来说,有一个更新和更简单的解决方案:在jQuery UI 1.10.0中引入了“appendTo”选项

http://api.jqueryui.com/dialog/#option-appendTo

$("#dialog").dialog({
    appendTo: "form"
    ....
});

准确的解是;

$("#dialogDiv").dialog({ other options...,
    open: function (type, data) {
        $(this).parent().appendTo("form");
    }
});

注意,在jQuery UI v1.10中有一个额外的设置。添加了一个附加的to设置,以解决ASP。将元素重新添加到表单的NET解决方案。

Try:

$("#dialog").dialog({
     autoOpen: false,
     height: 280,
     width: 440,
     modal: true,
     **appendTo**:"form"
});