Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Как применить свой плагин к вновь созданным элементам? (https://javascript.ru/forum/jquery/33208-kak-primenit-svojj-plagin-k-vnov-sozdannym-ehlementam.html)

Shitbox2 14.11.2012 11:04

Как применить свой плагин к вновь созданным элементам?
 
Например, мой плагин для jQ изменяет внешний вид всех textarea.
Как написать его так, чтобы он применялся к динамически созданным элементам?

К примеру у бутстрапа так работает: https://github.com/twitter/bootstrap...ap-dropdown.js
Но пока не доходит, как они это сделали, как работают их обработчики т.е.
$(document)
    .on('click.dropdown.data-api touchstart.dropdown.data-api', clearMenus)
    .on('click.dropdown touchstart.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() })
    .on('click.dropdown.data-api touchstart.dropdown.data-api'  , toggle, Dropdown.prototype.toggle)
    .on('keydown.dropdown.data-api touchstart.dropdown.data-api', toggle + ', [role=menu]' , Dropdown.prototype.keydown)

Опять же в моем случае, плагин должен обрабатывать textarea сразу, без всяких нажатий на что-либо.

Dmitriyff 14.11.2012 12:25

Плагин не применится пока вы его не вызовете
то есть вам надо указать к каким элементам его применить

$('someElement1', ... , 'someElementN').pluginName();

тут про обработчики

Shitbox2 14.11.2012 12:36

А когда его вызвать? К примеру, он должен скрывать все textarea и показывать вместо них элемент со своей логикой. По идее его нужно вызвать в момент появления нового поля ввода, но как узнать когда это поле появилось? Т.е. нужно отслеживать изменения dom и искать в них. Как это сделать?

Dmitriyff 14.11.2012 12:37

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

элементы же у вас не спотолка берутся, а как-то добавляются

Shitbox2 14.11.2012 12:45

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

Shitbox2 14.11.2012 14:45

Да, и можно еще отследить, когда в textarea поменялся текст, причем поменялся не вручную, а скриптом? Ковырял onpropertychange но как-то ненаковырял

Hoshinokoe 14.11.2012 17:20

Shitbox2,

У textarea есть событие change - http://api.jquery.com/change/

danik.js 14.11.2012 22:55

Цитата:

Сообщение от Shitbox2
Так-то оно так, но нужен универсальный метод

Нет пока такого метода. Была такая попытка: https://developer.mozilla.org/en-US/...utation_events . Но не взлетело.


Часовой пояс GMT +3, время: 14:47.