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

Octane 04.10.2010 03:01

Цитата:

Сообщение от arwprod
да вот если зохочется внести форму в какой-то пункт меню, то трындец)))

И что произойдет?

arwprod 04.10.2010 21:21

Цитата:

Сообщение от Octane (Сообщение 72945)
И что произойдет?

меню закроется, а так ничего)

Собственно говоря реализаций море, самого наработок много лежит. Но задача сейчас другая, определить элемент на который вызывается функция '<ul id="menu">'. Пока работаем с ним, открываются вкладки меню: ссылки, формы, текстовые блоки, картинки, грузится ajax в каком-нибудь другом блоке, в общем всё, что угодно.
Как-только кликнули куда-нибудь вне блока нашего меню, меню сбрасывается на первоначальный вид.

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

Octane 04.10.2010 22:45

Сразу все подробности поведения меню конечно трудно было описать… остается проверять event.target и его родителей.

arwprod 04.10.2010 23:44

Octane, прошу прощения, на счет "клика" внутри меню, моё упущение.

$('ul.menu').menu({/* config */});

$("body").click(function(event) {
	if(!$(event.target).parents('ul').hasClass('menu')){
		$('ul.menu').menu({/* config */}, 'destroy');
	}
});


Хотя, как мне кажется, это не лучший вараинт)

Octane 04.10.2010 23:58

Ну можно попробовать подкладывать под меню div {position: fixed; top: 0; right: 0; bottom: 0; left: 0; background: url(empty.gif); } с прозрачным фоном и по клику на него скрывать меню, если так не хочется вешать обработчик на body или document.

arwprod 05.10.2010 00:14

Octane

$('div#cl').click(function(event) {
    $('ul.menu').menu({/* config */}, 'destroy');
});


'div#cl' положил после <body>. В таком варианте не работает, если мы тыкаем на определенный элемент в html документе, ну, что в принципе логично... Если ограничиваться кликами по пустой области в документе, то конечно вариант намного лучше, потому что каждый раз не делаем проверок.


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