Jquery delegate

программирование JavaScript веб дизайн jQuery AJAX

Добрый день друзья.

Например у меня есть плагин на jquery и я могу его дернуть для таких то элементов.

$(function(){
$(".elements").myPlugin({});
});

Но как быть если через ajax подгружаются новые элементы? Как с помощью .on, .delegate дернуть его? Чтоб плагин обрабатывал новое.

Спасибо!

Примечание:
Немного не то видно. С "load" вообще не срабатывает.

В данный момент у меня так:

$("body").delegate(".widgEditor", "focusin", function(){
$(".widgEditor").LiveEditor({
vsize: "float"
});
});

Но это нужно ставить фокус в поле чтоб на него навешивался редактор. Вероятно что событие load сработало бы на изображении, мол картинка загрузилась.

Но спасибо за ответ.

Примечание:
По второму вопросу если честно не понял что вы имеете в виду "довесить" на последний элемент. Ну я как бы это и хочу, но я что-то вашей мысли не понял.

Интервал тут делать нет смысла. Ну что оно будет постоянно нагружать, это не выход. А если сделать чтоб редко было то будет простой когда появилось новое поле. Короче это сомнительно очень.

По сути дела мой плагин это редактор текста. А есть ситуация когда появляются новые поля на который этот редактор нужно навесить. Потому если уже поля все есть, тоесть страница с ними загрузилась - то проблемы нет, но если поля появляются - то как определить что они появились.

Примечание:
Теперь понял о чем вы говорите. Так у меня было ранее когда я использовал не свой редактор. Просто после того как обрабатывалась вставка полей дергалась фуцея и все как бы запускалось. Но это не верный путь в данном случае. Вернее так сделать можно, но это костыль. Дело в том что тот код который генерит запрос на новые поля не обязательно в ответе получит поля на который нужно навесить редактор. Это может быть и просто поле текстовое. Потому дергать в "холостую" я решил не есть правильно. Ведь более правильно разделить одно от другого. Именно почему я и задумался на счет delegate или on или еще как. Ведь если можно при генерации новых элементов с ними поработать, то почему бы и нельзя дергать плагин так же.

Если конечно же не выгорит, и варианта нет то я лучше оставлю так как есть - то есть при установке фокуса будет происходить событие.

Надеюсь вы поняли о чем я.
Ответы:
Можно воспользоваться делегированной обработкой событий jQuery метода .on()
$('#parent').on('load', '.elements', function(){
 $(this).myPlugin();
});
1. Банальный вариант, почему бы при обработке AJAX не "довесить" плагин на последний элемент?
2. Если первый вариант по каким-то причинам не подходит, сделайте таймер setInterval, каждые n времени проверяйте появление новых элементов (например, по количеству элементов с определенным классом), если новые есть - навешиваете на них плагин.
Они же не сами по себе появляются, да?)
Они появляются по какому-либо событию. В обработчике этого события после добавления поля сразу навешивайте редактор.
Непонятно, в чем конкретно заключается ваша проблема.


11 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.