JQuery UI диалог не вызывает $ .get внутри диалога после первого закрытия диалога - PullRequest
0 голосов
/ 18 июня 2010

У меня есть диалог JQuery UI и внутри него у меня есть еще одини перед тем, как открыть один изнутри, я вызываю $.get, чтобы получить html для него

, если я открою первый диалог и закрою его, затем откройте его снова и попробуйте открыть диалог внутри полученного htmlот $ .get не устанавливается


page1
   <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>


page2
<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 Ответ

1 голос
/ 18 июня 2010

Если page2 загружается в готовом документе - при первом получении: '<% = Url.Action ("Index", "Bank")%>' - через ajax, то методы document.ready в page2 никогда не будутвызвать (так как документ уже готов).

FYI - Передача функции в jQuery $ (function () {});то же самое, что $ (document) .ready (function () {});

Чтобы заставить этот код выполняться, просто удалите оболочку jQuery, так как код будет выполнен, когда он будет загружен в DOM черезвызов ajax.

Вы можете обернуть все это в анонимную функцию, если вам нужна инкапсуляция:

(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');
    }
});

Кроме того, вы не уверены в общей картине здесь, но вы можете рассмотретьиспользуя «живые» события jQuery, поскольку они слабо связаны с селекторами и будут работать, даже если элементы будут удалены, а затем добавлены обратно в dom.

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