|
|
|
Повесить jQuery плагин на динамически добавленные элементы
|
|||
|---|---|---|---|
|
#18+
Всем привет! Подскажите, плиз, опытные джаваскриптеры. Вот есть у меня некоторый кусок кода, который вынесен в плагин: Код: javascript 1. 2. 3. 4. 5. 6. 7. Оно нормально отрабатывает на элементах, которые уже присутствуют в DOM'е. А вот на динамически добавленные элементы чет не вешается. Как такое толком написать? Со всякими обработчиками кликов там понятно - там Код: javascript 1. А вот как в таком случае сделать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2016, 00:48 |
|
||
|
Повесить jQuery плагин на динамически добавленные элементы
|
|||
|---|---|---|---|
|
#18+
MikkiMouseА вот на динамически добавленные элементы чет не вешается. Это как? Ты их в DOM не добавляешь что ли? Какие же это тогда элементы, если они не в DOM-е? Приведи пример что и как ты делаешь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2016, 01:54 |
|
||
|
Повесить jQuery плагин на динамически добавленные элементы
|
|||
|---|---|---|---|
|
#18+
ТС видимо хочет один раз "навесить". Как в случае с делегируемыми событиями. Delegated eventshave the advantage that they can process events from descendant elements that are added to the document at a later time. By picking an element that is guaranteed to be present at the time the delegated event handler is attached, you can use delegated events to avoid the need to frequently attach and remove event handlers. http://api.jquery.com/on/ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2016, 10:19 |
|
||
|
Повесить jQuery плагин на динамически добавленные элементы
|
|||
|---|---|---|---|
|
#18+
skyANA, Да все понятно с делегируемыми, на что мне тут on() повесить? Элементы в DOM добавляет js-шаблонизатор, получает JSON аяксом. И вот на них плагин уже не работает. В принципе нашел решение вызывать плагин на элементах еще раз сразу после добавления их в DOM, но по-моему оно какое-то кривоватое. Должен быть другой путь. Почему и спрашиваю, может кто знает ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2016, 15:33 |
|
||
|
Повесить jQuery плагин на динамически добавленные элементы
|
|||
|---|---|---|---|
|
#18+
MikkiMouse, нашли решение - молодец. А рассуждать о его кривизне, не зная ни задачи, ни плагина, смысла нету. Например jQuery Modal вызывается после добавления элементов в DOM и это нормально: Код: javascript 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2016, 16:23 |
|
||
|
Повесить jQuery плагин на динамически добавленные элементы
|
|||
|---|---|---|---|
|
#18+
MikkiMouseвызывать плагин на элементах еще раз сразу после добавления их в DOM, но по-моему оно какое-то кривоватое Не никаких элементов не в DOM. Я же об этом написал уже. Элементы есть только в DOM. Что и на что ты собирался вешать, если никаких элементов не существует? Просто рекомендую подумать на эту тему. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2016, 18:59 |
|
||
|
Повесить jQuery плагин на динамически добавленные элементы
|
|||
|---|---|---|---|
|
#18+
skyANAпосле добавления элементов в DOM и это нормально Это не нормально, это правильно :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2016, 19:00 |
|
||
|
Повесить jQuery плагин на динамически добавленные элементы
|
|||
|---|---|---|---|
|
#18+
hVosttskyANAпосле добавления элементов в DOM и это нормально Это не нормально, это правильно :) Так и запишем: Хвост разводит лапшу в колбеках :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2016, 19:12 |
|
||
|
Повесить jQuery плагин на динамически добавленные элементы
|
|||
|---|---|---|---|
|
#18+
hVostt, hVosttНе никаких элементов не в DOM. Я же об этом написал уже. Элементы есть только в DOM. Что и на что ты собирался вешать, если никаких элементов не существует? Просто рекомендую подумать на эту тему. Что за бред сумасшедшего? Если тbI не вкурил о чем вопрос - побудь читателем, пожалуйста, не засоряй тему. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2016, 20:52 |
|
||
|
Повесить jQuery плагин на динамически добавленные элементы
|
|||
|---|---|---|---|
|
#18+
MikkiMouseЧто за бред сумасшедшего? Если тbI не вкурил о чем вопрос - побудь читателем, пожалуйста, не засоряй тему. У тебя похоже заскорузлый болезненный пунктик на «ты». Я сам решу, когда мне быть читателем, а когда быть писателем. Есть два способа вешать обработчики на элементы, добавляемые в DOM динамически: вешать обработчик на контейнер, это самый эффективный путь, и навешивать каждый раз после добавления. От того, нравится тебе это или нет, третий способ не появится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2016, 22:23 |
|
||
|
Повесить jQuery плагин на динамически добавленные элементы
|
|||
|---|---|---|---|
|
#18+
skyANAТак и запишем: Хвост разводит лапшу в колбеках :) Я к тому сказал, что если элементов в DOM нет, то и вешать обработчики некуда. Плагины jQuery обычно вешаются на конкретные элементы, потому что часто привязывают к ним не только события, но и состояния. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2016, 22:25 |
|
||
|
Повесить jQuery плагин на динамически добавленные элементы
|
|||
|---|---|---|---|
|
#18+
hVostt, О, видишь, побыл немного читателем - сразу и конструктив появился. Наконец прочитал про "динамически" ))) В принципе, появилась еще идея с контейнером: сделать в начальной разметке блок с определенным классом и навесить плагин на него. А аяксом уже подгрузить только его внутренности. Думаю так должно прокатить. Завтра попробую, всем конструктивным спасибо за помощь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2016, 00:03 |
|
||
|
Повесить jQuery плагин на динамически добавленные элементы
|
|||
|---|---|---|---|
|
#18+
В общем все было намного проще - плагин был самописный (верстальщиком хе-хе), вследствие чего, естественно, глючный. Все там нормально работало не надо было никаких лишних телодвижений. То есть, как в том анекдоте: "Извиняюсь, был напуган" ))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.12.2016, 01:59 |
|
||
|
Повесить jQuery плагин на динамически добавленные элементы
|
|||
|---|---|---|---|
|
#18+
jQuery работает с элементами, которые были на странице на момент инициализации кода. Если добавляются новые элементы - при помощи ajax'а или функций типа append() - то события не затрагивают их. Как же работать с новыми созданными элементами DOM? Оказывается для динамических элементов используется делегированная обработка событий. Если кратко, то смысл делегирования в том, что обработчики "навешиваются" не на отсутствующие в dom элементы, а на существующий родительский объект. Таким образом, при срабатывании соответствующего события, будет вызван данный обработчик для всех элементов, соответствующих селектору, даже если этих элементов не было во время объявлении обработчика (например при загрузке страницы). 100% рабочий пример можно подсмотреть тут moxiemaks.ru/jquery/sobytija-dlja-dinamicheski-dobavlennyh-jelementov-v-jquery/ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2017, 10:45 |
|
||
|
Повесить jQuery плагин на динамически добавленные элементы
|
|||
|---|---|---|---|
|
#18+
Странное утверждение насчёт того, что элемент обязательно должен быть добавлен в ДОМ, при навешивании на него события. Код: html 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2017, 13:10 |
|
||
|
Повесить jQuery плагин на динамически добавленные элементы
|
|||
|---|---|---|---|
|
#18+
ShSerge, Ключевое здесь «при навешивании на него события». Событие само по себе не навешается :) А так конечно ты прав. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2017, 15:03 |
|
||
|
Повесить jQuery плагин на динамически добавленные элементы
|
|||
|---|---|---|---|
|
#18+
moxiemaks, реклама что ли? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2017, 15:39 |
|
||
|
|

start [/forum/topic.php?fid=22&msg=39350499&tid=1444567]: |
0ms |
get settings: |
10ms |
get forum list: |
10ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
68ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
46ms |
get tp. blocked users: |
1ms |
| others: | 246ms |
| total: | 398ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...