Как прикрепить много событий jquery к динамически загружаемому контенту - PullRequest
1 голос
/ 03 июля 2011

У меня есть навигационные вкладки на левой стороне, и я загружаю контент на правой стороне. Я связал событие click с помощью live, но как можно прикрепить этот тип функций

$('#form').submit(function() { 
        $(this).ajaxSubmit(options); 
          return false; 
    }); 

$("#dialog-confirm").dialog({
                             resizable: true,
                             autoOpen: false,
                             height:427,
                             width:650,
                             modal: true,
                             buttons: { "Ok": function() { $(this).dialog("close"); },
                                        "Cancel": function() { $(this).dialog("close"); } },
                              });

также нужно ли мне прикрепить ajaxoptions

1 Ответ

1 голос
/ 03 июля 2011

Когда вы загружаете новый контент, вы должны повторно применить такие вещи, как ".dialog ()" из вашего собственного кода.Как правило, вы делаете это в обработчике «success» из механизма ajax, который вы использовали для загрузки контента.

Это означает, что это действительно хорошая идея - организовать код установки «виджета» вашей страницы так, чтобычто он может быть вызван для работы с произвольной частью страницы.Во время инициализации страницы вы будете запускать его для <body>, но после динамической загрузки содержимого вы будете запускать его для обновленного элемента контейнера.

edit - более подробно: как именно вы будете это делать, зависит от вас, и это зависит от того, что вы делаете в своем приложении.Я написал jQuery-плагин для решения проблемы, но это может быть излишним для многих целей.

Общая идея заключается в том, что у вас будет функция инициализации:

function initializeFeatures(startingPoint) {

Внутри функции вы выполняете такие вещи, как инициализация диалогов, и вы основываете код, который выполняет работу, на параметре «стартовой точки».Другими словами, когда код должен «найти» элементы страницы для настройки, он всегда должен начинаться с него:

    $(startingPoint).find('.dialog-container').dialog({
      resizable: true,
      autoOpen: false,
      // ...
    });

Затем в вашем обработчике «success» после загрузки контента выможно просто снова вызвать вашу функцию:

    $('#dynamic').load('/your/url', function() {
      initializeFeatures(this);
    });

Опять же, это полностью зависит от точных деталей вашего приложения.

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