Как автоматически связать инициализации плагинов для контента, загруженного через ajax - PullRequest
1 голос
/ 06 апреля 2010

Я использую расширяемый плагин от Brandon Aaron для автоматического увеличения моих текстовых полей в форме, и он работает нормально. проблема в том, что я загружаю много страниц через ajax, поэтому мне нужно привязать метод плагина к текстовым областям, загруженным через ajax.

есть ли способ сделать такого рода вызовы методов, как

$("textarea").expandable();

через live () или делегат () в jQuery. это сделает мой код намного чище.

Ответы [ 3 ]

2 голосов
/ 06 апреля 2010

Плагин .liveQuery все еще используется здесь, он не полностью заменен на .live() ядра jQuery, вот как будет работать ваш пример:

$("textarea").liveQuery(function() {
  $(this).expandable();
});

.livequery() на самом деле следит за новыми элементами, в отличие от .live(), который прослушивает события, всплывающие из DOM, они работают совершенно по-разному.

0 голосов
/ 19 января 2012

Лично я бы пошел по этому пути, чтобы плагин инициализировался в функции и вызывал эту функцию, когда загрузка ajax завершена. Моя батарея ноутбука разряжена, поэтому мой синтаксис, вероятно, немного отключен, но идея есть.1001 *

function foo()
{
   $('.classSelector').plugin();
}

$('.eventListener').load('url', function()
{
    foo();
})
0 голосов
/ 06 апреля 2010

Только события могут быть связаны, плагины должны вызываться с каждым новым элементом.

[Изменить]

События не привязаны к новым элементам, события просто перехватываются на фазе всплытия / захвата на пути к элементу, что позволяет добавлять новые элементы и обрабатывать события по-прежнему.

Плагины связаны с набором элементов, возвращаемых конструктором init. Разработчики плагинов могут использовать делегирование событий в своем плагине для захвата новых элементов, добавляемых в область действия элемента, к которой они были присоединены (или они могут выйти за пределы документа и рискнуть столкнуться с другими плагинами).

...