ссылки не открывают диалоговое окно jquery после сохранения формы - PullRequest
0 голосов
/ 19 декабря 2010

setup: cakephp, jquery 1.8.7, cakephp.bee.pl ajax helper

У меня есть веб-сайт, который настроен для загрузки всех страниц через ajax.На странице администрирования я загружаю действие 'users / index' и загружаю пользователей.Я вставил ссылку, чтобы открыть диалоговое окно jquery, чтобы добавить нового пользователя.Как только администратор нажмет кнопку «Сохранить», он отправит данные на сервер, сохранит пользователя и вернет представление «индекс», чтобы обновить страницу администрирования «div».До сих пор нет проблем.Проблема в том, что после обновления ссылок в недавно обновленном div вместо открытия диалогового окна jquery или удаления пользователя и повторного запуска представления индекса через ajax они перенаправляют браузер в представление index, но на новой странице и не загружают его через ajax..

вот мой код создания диалога:

<script type="text/javascript">
    $(document).ready(function(){
        $('a[name=modal]').click(function (e){
            e.preventDefault();
            var $link = $(this);
            var $form = $link.attr('formid');            
            // var $dv = $body.append('<div id="dlg"></div>');

        $('#useDlg').load($link.attr('href')).dialog({
         autoOpen: false,
         modal: true,
         title: $link.attr('title'),
         resizable: false,
         width: 370,
         height: 350,
         buttons: {
            "Close": function(){
                $(this).dialog("close");
                //$(this).dialog("destroy");
            },
            " Save ... ": function(){                
                $.ajax({
                    async: true,
                    type: 'POST',
                    url: $link.attr('href'),
                    data: $("form").serialize(),
                    dataType: "html",
                    success: function (response, json){
                        //alert(response);
                        $('#viewUsers').empty().html(response);
                        $('#useDlg').dialog("close");
                       // $('#useDlg').dialog("destroy");
                    }
                });
            }
         }
      });
   });
});

  $('a[name=modal]').click(function(){
       $('#useDlg').dialog('open'); 
    });

Я использую диалоговое окно несколько раз, чтобы также редактировать профиль пользователя.Таблица пользователя имеет две ссылки, связанные с пользователем.Просмотр профиля и удаление.Профиль просмотра открывает диалоговое окно jquery с профилем пользователя и удаляет, удаляет пользователя и возвращает через ajax действие index для обновления пользовательской части страницы администрирования.

Есть ли у кого-нибудь идеи, почему ссылки для профиля просмотране будет перехвачен после обновления div пользователей?

заранее спасибо, Денис

Ответы [ 2 ]

1 голос
/ 19 декабря 2010

Трудно сказать точно, поскольку вы не опубликовали свой код разметки, но я подозреваю, что происходит то, что обработчики 'click' теряются при перезагрузке HTML-формы в вызове load ().

Попробуйте изменить «живые» обработчики click, которые динамически перепривязываются. то есть что-то вроде:

$("a[name=modal]").live("click", function(event) {
    // do stuff here...
});

См. Документы для «живой» здесь: http://api.jquery.com/live/

0 голосов
/ 20 декабря 2010

спасибо, Mikesname ..., который добился цели ... для всех, кто мог бы решить эту проблему, я также удалил

$ ( 'а [имя = модальный]). Выберите (функция () { $ ( '# UseDlg') диалог ( 'открыто'). });

и только добавил диалог $ ('# useDlg'). ('Open'); к первому событию щелчка .. без второй модификации событие все равно не сработает после перезагрузки, и это приведет к непредвиденным результатам на странице ...

Я бы поставил это как ответ, но я действительно не понимаю, как:)

С уважением, денис

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...