第一次关闭对话框后,jquery ui对话框不会在对话框内调用$ .get

时间:2010-06-18 07:53:56

标签: jquery jquery-ui jquery-ui-dialog

我有一个jquery ui对话框,里面有另外一个 在打开里面的那个之前,我打电话给$.get来接收它的html

如果我打开第一个对话框并关闭它然后再次打开它并尝试打开从$ .get收到的html里面的对话框没有设置

<小时/> 第1页

   <script type="text/javascript">
        $(function() {
            $("#bidialog").dialog({
                resizable: true,
                height: 500,
                width: 700,
                modal: true,
                autoOpen: false,
                buttons: { 'Anuleaza': function() { $(this).dialog('close'); } }
            });
        });

        function openit() {
            $.get('<%=Url.Action("Index", "Bank") %>', function(data) { $("#bidialog").html(data); })
            $("#bidialog").dialog('open');
        }

        $(function() { $("#bopen").click(openit); });

    </script>

    <div id="bidialog" title="the dialog">
        first content
    </div>
    <button id="bopen">
        openit</button>

<小时/> 第2页

<script type="text/javascript">
    $(function() {
        $("#bcdialog").dialog({
            resizable: true,
            height: 400,
            width: 600,
            modal: true,
            autoOpen: false,
            buttons: { 'Anuleaza': function() { $(this).dialog('close'); } }
        });
    });

    $(function() {
        $("#create").click(createBank);
    });

    function createBank() {        
        $.get('<%=Url.Action("Create", "Bank") %>', function(data) { $("#bcdialog").html(data); })
        $('#bcdialog').dialog('open');
    }


</script>

<div id="bcdialog" style="display:none;" title="create bank">
    first content
</div>

<button class="ui-state-default ui-corner-all" id="create">
    <span class="ui-icon ui-icon-circle-plus fl"></span>Adauga</button>

1 个答案:

答案 0 :(得分:1)

如果在文档就绪时加载了page2 - 在第一次获取期间:'&lt;%= Url.Action(“Index”,“Bank”)%&gt;' - 通过ajax,然后第2页的document.ready方法永远不会被调用(因为文档已经准备好了)。

FYI - 将函数传递给jQuery $(function(){});与$(document).ready(function(){});

相同

要使代码执行,只需删除jQuery包装器,因为代码将在通过ajax调用加载到dom中时执行。

如果需要封装,可以将整个事物包装在匿名函数中:

(function () {
     $("#bcdialog").dialog({
        resizable: true,
        height: 400,
        width: 600,
        modal: true,
        autoOpen: false,
        buttons: { 'Anuleaza': function() { $(this).dialog('close'); } }
    });

    $("#create").click(createBank);

    function createBank() {        
        $.get('', function(data) { $("#bcdialog").html(data); })
        $('#bcdialog').dialog('open');
    }
});

此外,不确定这里的大图,但你可能想要考虑使用'live'jQuery事件,因为它们松散地绑定到选择器,即使元素被删除然后再添加回dom,它也会工作。

$("#create").live("click" createBank);