回发后,CSS样式不会重新应用于jQuery对话框

时间:2011-11-09 18:35:27

标签: jquery asp.net css updatepanel jquery-ui-dialog

我有一个股票jQuery对话框div,其中包含一个包含在updatepanel中的数据条目usercontrol。它看起来很棒,直到第一次回发。之后根本没有应用任何样式。 (控件保留其值并且事件继续按预期运行。)关闭对话框后,如果有回发,则后续.dialog(“open”)调用没有应用样式。

    $(function () {
        var dlg = jQuery("#EventMod").dialog({
            autoOpen: false
            , modal: true
        });
        dlg.parent().appendTo(jQuery("form:first"));  

        $(".NewEvent").click(function () {
            $("#EventMod").dialog("open");
            return false;
        });
    });

对话框div在这里:

<div id="EventMod" title="Event Modify" class="ui-helper-hidden">
    <asp:UpdatePanel ID="updNewEvent" runat="server">
        <ContentTemplate>
            <uc1:EventEdit ID="NewEvent" runat="server" />
        </ContentTemplate>
    </asp:UpdatePanel>
</div>

在usercontrol中,动态分配类,它们显示如下:

    <table class="NewEvent" >
        <tr>
            <td align="center">
                <table class="Event">
                    <tr class="Title">
                        <th width="55">
                            <strong>Event #</strong>
                        </th>
    ... snip ...

我在父页面中链接了样式表。我尝试将其添加到usercontrol,但没有可见的结果。

1 个答案:

答案 0 :(得分:2)

之前我有这种奇怪之处,必须这样做才能在UpdatePanel内获得稳定的结果:

   $(function () {

        var titleText="This is the title"
        var key = "uniqueId";
        var newParentDiv= "#" + key;
        var div = $("<div title='" + titleText + "' id='" + key+ "'></div>");
        $('body').append(div);
        $(newParentDiv).html($("#EventMod").html());

        var dlg = jQuery(newParentDiv).dialog({
            autoOpen: false
            , modal: true
        });
        dlg.parent().appendTo(jQuery("form:first"));  

        $(".NewEvent").click(function () {
            $(newParentDiv).dialog("open");
            return false;
        });
   });

对我来说,问题是jQuery对话框实际上将您的内容移动到DOM中的新位置。如果发生部分回发而没有更新jQuery UI放置对话框的DOM,它会变得陈旧或挂起。