Диалоговое окно jQuery UI - Сохранение нажатой ссылки внутри уже открытого диалогового окна jQuery UI - PullRequest
0 голосов
/ 19 января 2011
<script type="text/javascript"> 
$(document).ready(function() {
    $('#mardicion').each(function() {
        var $link = $(this);


        $link.click(function() {
            var $dialog = $('<div></div>')
                .load($link.attr('href') + ' #content')
                .dialog({
                    autoOpen: false,
                    title: $link.attr('title'),
                    width: (pageWidth()*0.9),
                    height: (pageHeight()*0.9)
                });
                $dialog.dialog('open');

                return false;
        });
    });
});
</script>

Я использую вышеуказанный javascript для загрузки страницы, когда я нажимаю на ссылку, страница загружается правильно, но когда я нажимаю другую ссылку внутри диалога, щелкающая ссылка открывается в окне браузера, а не внутри диалога.Я слышал, что использование обработчика щелчков является правильным способом сделать это (что ссылка открывается внутри диалога), но я не уверен, как реализовать его с помощью jQuery UI Dialog .

Спасибо!

1 Ответ

2 голосов
/ 19 января 2011

Вам придется использовать функцию live(). В определенное время (я думаю, при загрузке страницы) вы прикрепляете обработчик событий клика к определенному количеству элементов с идентификатором mardicion. Когда страница загружается в ваш диалог, ссылки внутри этой страницы, даже если они могут иметь идентификатор madicion, их события щелчка не подключаются.

Используйте $('#madicion').live('click' , function(e) {}), чтобы перехватывать события щелчка также для всех элементов, даже если они добавляются на страницу на более позднем этапе.

В качестве примечания:

  1. похоже, вы неправильно используете атрибут ID. Вам разрешено иметь только один элемент для каждого идентификатора. Просмотр $('#XXX').each() показывает, что у вас более 1 предмета. Правильный способ обработки этих вещей - дать этим элементам класс CSS и использовать $('.XXX').each();
  2. Использование each необязательно: $('#XXX').click(function() { }) применяет указанную функцию к каждому из элементов.
...