Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Вызов функции вне html объекта (https://javascript.ru/forum/jquery/12141-vyzov-funkcii-vne-html-obekta.html)

arwprod 03.10.2010 00:59

Вызов функции вне html объекта
 
Всем ночи доброй.
Пишу функцию меню, нечто похожее на выпадающие меню во всех программах (например вашем браузере). Суть простая, тыкнули на пункт меню, открылся children. Тыкнули на область вне элемента, на который вызвали функцию, всё вернулось в исходное состояние.

Возможно объяснил неочень, но легко понять, если потыкать меню в браузере)))

Собственно как грамотно определить саму область вне элемента, пока непонятно, кто-нибудь занимался подобным?

arwprod 03.10.2010 01:04

Тоесть проще говоря нужно взять область элемента "body" и вырезать из неё элемент, пусть будет "div#menu". Пока работаем с "div#menu", работает плагин, когда кликаем вне "div#menu", плагин возвращается в исходное состояние, как буд-то страниу обновили...

Octane 03.10.2010 01:07

каждый раз при открытии меню делать:
$(document).one("click", close_menu)

arwprod 03.10.2010 01:16

Octane, собственно зачем? Сейчас получается, что при клике на меню, мы открываем вложенный элемент, а следующей строкой закрываем его...

Octane 03.10.2010 01:46

Что непонятного? Открыли меню, повесили обработчик для закрытия. Или меню многоуровневое? Тогда повесьте постоянный обработчик на документ и проверяйте event.target

Aetae 03.10.2010 01:49

Цитата:

Сообщение от arwprod (Сообщение 72840)
Octane, собственно зачем? Сейчас получается, что при клике на меню, мы открываем вложенный элемент, а следующей строкой закрываем его...

На менюшке всплытие отменить и дело в шляпе.)

arwprod 03.10.2010 01:59

Aetae, спасибо )
Octane, и вам) Обрабатывать страницу при каждом действии пользователя, по-моему не очень, а вешать обработчик на одноуровневое меню - вполне.

Octane 03.10.2010 02:05

Если меню должно закрываться по клику на странице, то в любом случае будет обработчик события click на document или другом общем для всех элементов узле (html, body, …), не понятно к чему вы сказали:
Цитата:

Сообщение от arwprod
Обрабатывать страницу при каждом действии пользователя, по-моему не очень, а вешать обработчик на одноуровневое меню - вполне.

Видимо еще не поняли, что нужно сделать.

arwprod 03.10.2010 02:07

Aetae, а кросс-браузерного варианта для отмены всплытия от нижнего элемента к верхнему нету? =\

arwprod 03.10.2010 02:11

Цитата:

Сообщение от Octane (Сообщение 72846)
Если меню должно закрываться по клику на странице, то в любом случае будет обработчик события click на document или другом общем для всех элементов узле (html, body, …), не понятно к чему вы сказали:
Видимо еще не поняли, что нужно сделать.

дело в том, если мы открываем меню кликом, то оно у нас тут же закрывается, т.к. наше меню является частью document.

На самом деле нагородить можно всё что угодно, но пока что хотелось бы найти способ вырезать это самое меню из document и один раз вызвать функцию "close_menu", при клике на полученную область в document. И при этом чтобы плагин выключился и не работал, пока мы опять не ткнемся мышкой в меню...


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