Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Одновременная работа нескольких виджетов (https://javascript.ru/forum/jquery/29041-odnovremennaya-rabota-neskolkikh-vidzhetov.html)

svs 12.06.2012 17:54

Одновременная работа нескольких виджетов
 
У меня на странице есть 2 виджета.
Первый ничего не знает о существовании второго. Второй не знает о первом.
В качестве примера возьмем первый - аккордион. Второй - попап-диалог.
Закрыть попап можно по нажатию на Х внутри попапа или на клик по свободному пространству.
Так вот.
У нас есть баинд клика на заголовок аккордиона, какой его сворачивает или разворачивает. и тригер клика по свободному пространству.
Когда попап открыт и мы кликаем на аккордеон, срабатывает сразу два тригера. А нам нужно в таком случае выполнить тригер того виджета, о котором мы не знаем. Ведь на месте аккордиона может быть любой другой виджет.

Deff 12.06.2012 18:36

Цитата:

Сообщение от svs
Когда попап открыт и мы кликаем на аккордеон, срабатывает сразу два тригера. А нам нужно в таком случае выполнить тригер того виджета, о котором мы не знаем. Ведь на месте аккордиона может быть любой другой виджет.

Виджет аккордеона (или иного виджета вместо него) - обрамите div - блоком с запасом
он и будет тем свободным пространством, на которое, по-клику должен будет реагирует триггер cворачивания аккордеона

И данное пространство под первым виджетом исключить проверкой внутри кликера попап

beard 12.06.2012 20:41

Цитата:

Сообщение от Deff
Виджет аккордиона (или иного виджета вместо него) - обрамите div - блоком с запасом
он и будет тем свободным пространством, на которое реагирует триггер cворачивания аккордеона

Данное пространство исключить проверкой внутри кликера попапа

или мне кажется или ты в какой раз советуешь чушь? иногда и по делу )


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

svs_js 12.06.2012 21:54

а вот в том и вопрос :) как у неизветсного виджета запретить всплытие событий :)

beard 12.06.2012 22:10

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

http://learn.javascript.ru/bubbling-...сплытия

Deff 12.06.2012 22:14

svs_js,
Выложите код с двумя виджиками - мну поправит
Или ссылку на страницу

Deff 12.06.2012 22:15

Цитата:

Сообщение от svs_js
как у неизветсного виджета

У неизветсного виджета Будет известная область размещения ? (или тож самое у popap) ?

svs 13.06.2012 18:34

код, к сожалению, выложить не могу...

у виджетов область размещения неизветсна ))

svs 13.06.2012 18:50

и у меня еще 1 вопрос :)

так же есть 2 виджета.
Первый - Таблица. При клике на строку изменяется ее фон. Тоесть таким способом активной может быть только 1 строка. И есть скрытый инпут, где хранится Айди выделенной строки. Выделение со строки можно убрать, кликнув по ней второй раз.

Второй виджет - Попап. Вызывается при клике по строке.
При повторном клике на эту же строку попап закрывается. Попап можно так же закрыть при клике на Х внутри самого попапа.

Так же виджеты ничего о друг друге не знают. Так как вместо попапа может быть любой другой виджет. И что мы получаем:

1. Выделяем строку. Инпут Хайден меняет свое значение, которое = айди строке. и уже при повторном нажатии на эту же строку попап закроется и значению инпута присвоится 0.
А если мы попап закроем по нажатию на Х. Значение скрытого инпута не изменится, но попап закроется. и при повторном нажатии на эту же строку попап не откроется, но скрытый инпут станет = 0. Если еще раз нажмем на эту строку, откроется попап.
Тоесть приходится делать лишний клик. Может кто-то посоветует, как вот делать такие виджеты, какие работают друг с другом. Заранее спасибо. Это очень интересный вопрос. В интернете о таком ничего не могу найти.

svs 13.06.2012 18:51

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


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