JQuery对话 - 第二次不打开

Win*_*ton 5 jquery-ui modal-dialog jquery-ui-dialog

StackOverflow上有几篇关于这个主题的帖子,但没有一个答案对我有帮助.我正在使用DataList控件,该控件由SELECT通过DataAdapter填充.建议使用一个概念,即只能打开一个对话框实例,但不能应用此方法

html的结构是:

<asp:DataList ID="DataList" runat="server">
         <ItemStyle />
         <ItemTemplate>
             <a href="" class="link"/></a>
             <div class = "dialog" id="dynamicID" style="display:none">
             </ div>
         </ ItemTemplate>
     </ asp: DataList>
Run Code Online (Sandbox Code Playgroud)

我正在使用的jQuery代码是:

<script language="javascript" type="text/javascript">
     $ (function () {
         $ (". link. ") click (function () {
             var id = '#' + ($ (this). siblings ('. dialog'). attr ('id'));
             $ (id). dialog ({
                 AutoOpen: false,
                 closeOnEscape: true,
                 resizable: false,
                 draggable: false,
                 modal: true,
                 width: 800,
                 height: 600,
                 overlay: {backgroundColor: "# 000", opacity: 0.5},
                 top: 20,
                 show: 'fade',
                 hide: 'fade',
                 buttons: {
                     "Close": function () {
                         $ (id). dialog ('close');
                     }
                 }
             });
             $ (id). dialog ('open');
         });
     });
</ script>
Run Code Online (Sandbox Code Playgroud)

bal*_*dre 6

想象一下这个HTML

<asp:DataList ID="dataList" runat="server">
    <ItemTemplate>
        <div class="row">
            <p>
                Result: <strong>
                    <%# Container.DataItem.ToString() %></strong></p>
            <a href="#" class="link" data-open="dialog_<%# Container.ItemIndex %>" />Click
            To Open</a>
            <div class="dialog" id="dialog_<%# Container.ItemIndex %>">
                <h2>
                    This is the text inside the dialog #
                    <%# Container.ItemIndex %>.</h2>
                <p>
                    &nbsp;
                </p>
            </div>
        </div>
    </ItemTemplate>
</asp:DataList>
Run Code Online (Sandbox Code Playgroud)

用这个JavaScript

$(function () {

    // create dialogs
    $(".dialog").dialog({
        autoOpen: false,
        closeOnEscape: true,
        buttons: {
            "Close": function () {
                $(id).dialog('close');
            }
        }
    });

    // hook up the click event
    $(".link").bind("click", function () {
        // console.log($(this).parent());
        // open the dialog
        var dialogId = $(this).attr("data-open");
        $("#" + dialogId).dialog("open");

        return false;
    });

});
Run Code Online (Sandbox Code Playgroud)

很可爱.

可以在这里找到工作示例

你的方法有什么问题

你正在一个方法中创建对话框,这应该在里面创建$(document).ready(),每次你点击它,它会创建一个对话框,但是...它已经存在并搞砸了所有东西.

使用对话框时:

  • 首先,您使用创建它们 .dialog()
  • 您只需要使用.dialog('open')该对话框可见
  • .dialog('close')用来隐藏该对话框

默认情况下,jQuery UI CSS将自动配置对话框(display:none;),因此您无需执行此类操作.