Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Применение библиотек > jquery и изменение количества option в select


Автор: Frozen_Coyote 12.12.2011, 12:37
Друзья, помогите плиз логику ухватить - что то не соображу никак

Есть страница с произвольным количеством select-ов 

Мне необходимо чтобы jquery слушал их состояние и если в какой либо из них добавляется динамически новый option (ид родительского select заранее неизвестно, подчеркиваю, равно как и их количество на паге) - ну пусть там alert подаст, к примеру, с ид этого select

спасибо

Автор: $дмитрий 12.12.2011, 13:23
Цитата

и если в какой либо из них добавляется динамически новый option

Ну кто-то же добавляет эти option, вот туда и пиши alert();

Автор: Frozen_Coyote 12.12.2011, 13:55
нене, смотри какая штука:

я пишу плагин. Плагин не знает о том, сколько селектов будет на странице. Он подключается и при первичной загрузке преобразует стандартные дропы в мои симпатичненькие. Ид этого моего симпатичненького базируется на ид реального селекта (ну к примеру #название_моего_плагина_ид_юзерского_селектора). Но пользователь, кторый захочет к примеру поюзать мой плагин, может со своими селектами творить разные вещи - например динамически добавить в своих кодах новый опшн своему. И мой плагин должен это прочекать и сразу же добавить опшн-эмулятор в преобразованный мой симпатичненький, понимаешь? Ид которым юзер захочет обозвать свой селект я само собой не знаю - надо как то слушать все селекты и при изменение в каком то из них количества опшн - принять меры - либо добавть опшн эмулятор - либо удалить. Как добавлять удалять - я преркасно знаю, но как отловить куда именно - не пойму никак

Я конечно могу превратно понимать логику процесса - буду признателен за корректировку. Но видится все как то так. Селектор эмулятор сделан на слоях

Автор: $дмитрий 12.12.2011, 15:19
Теперь понятно
Задача нестандартная, нужно подумать

Автор: Frozen_Coyote 12.12.2011, 15:31
Дмитрий, как вариант работоспособный (не знаю, насколько он грамотный) при инициализации плагина я вначале всего кода указал плагину что "дружок, а пробегись ка по существующим селектам и удали ка все мои симпапульки на div ах нахрен, а далее инициализируйся и конвертируй опять стандартные элементы в нестандартные". Логика такова: при первичной загрузке страниц упираясь в этот код плагин само собой ничего не находит (он же на ready сработал - все еще нецеловано, как говорится) и спокойно все конвертирует в мою так сказать, красоту. 

Далее

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

Но конечно если найдется способ пасти количество опшнов каждого селекта и отработки не всего набора на странице а конкретного - будет круче само собой

Автор: $дмитрий 12.12.2011, 15:49
Обычно при написании подобных плагинов разработчик дает СВОЙ api для добавление option. Поэтому у пользователя нет потребности подключать что-то еще

Ну ведь интерес как раз в том чтобы найти способ вклинится в чужой обработчик!  smile 

Автор: Frozen_Coyote 12.12.2011, 16:02
я вот и не знаю - красиво ли это будет заставлять юзера после любой своей динамической процедуры со своими дропдауном вызывать опять инициализатор для перелопачивания. может все же есть способ отработать изменение конкретного select а . ))

Автор: $дмитрий 12.12.2011, 16:08
Цитата

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

Кроме как изменинения количество пунктов в списке, что там еще менять?

Автор: Frozen_Coyote 12.12.2011, 16:14
да нет, количество пунктов через плагин никак не указывается.. пока из параметров в плагин на пользовательский выбор передаются цвет активного бэкграунда для выбранного пункта и активного цвета фонта.. далее будет видно ))

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)