![]() |
|
Модераторы: Sardar, Aliance |
![]()
|
|
| taral |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 230 Регистрация: 17.1.2008 Репутация: нет Всего: нет |
Доброго времени суток!
Бьюсь уже несколько часов чтобы осуществить такую штуку: Есть элемент
Мне нужно чтобы событие осуществлялось при клике на любом месте кроме этого элемента. Мне нужно это вот для каких целей. Я делаю менюшку. Она открывается при клике. И закрывается если кликают на любом другом месте кроме ее самой. |
|||
|
||||
| ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 48 Всего: 386 |
-------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! |
|||
|
||||
| Samotnik |
|
|||
![]() Super star ! ![]() ![]() ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 7192 Регистрация: 4.11.2006 Где: Минск City Репутация: нет Всего: 191 |
taral, а в чем проблема ?
onclick еще никто не отменял |
|||
|
||||
| taral |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 230 Регистрация: 17.1.2008 Репутация: нет Всего: нет |
Samotnik
onclick я могу привязать событие к элементу. А мне нужно ко всему кроме этого элемента. ksnk prototype Я решил проблему таким образом. привязываю событие закрытия меню на onclick на объект window.document. В событии по клику на раздел меню выполняю то что нужно и прерывается действие события new Event.stop(event) Поскольку события выполняются по пирамиде (лучше не придумал как сказать...) сначала выполняется действие по клику на раздел меню и все, поскольку я прерываю все дальнейшие события. В этом способе есть недостаток. Если мне не нужно прерывать все дальнейшие события, то этот способ не подходит=( Добавлено через 1 минуту и 42 секунды Может кто знает более доскональное решение. В данной ситуации мое решение меня устраивает, но человек обязан стремится к совершенству=) |
|||
|
||||
| Samotnik |
|
|||
![]() Super star ! ![]() ![]() ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 7192 Регистрация: 4.11.2006 Где: Минск City Репутация: нет Всего: 191 |
||||
|
||||
| taral |
|
||||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 230 Регистрация: 17.1.2008 Репутация: нет Всего: нет |
Ну да=) И я ее решил.
И теперь спрашиваю возможно есть более лаконичное решение. Это сообщение отредактировал(а) taral - 9.1.2009, 02:32 |
||||
|
|||||
| GZep |
|
|||
![]() участник Винграда ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1528 Регистрация: 7.7.2006 Где: Москва Репутация: 1 Всего: 32 |
не совсем тебя здесь понел, хотьи прочитал 2 раза -------------------- ![]() ![]() |
|||
|
||||
| taral |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 230 Регистрация: 17.1.2008 Репутация: нет Всего: нет |
Всем спасибо. Прочитал ссылку ksnk. Все основано на похожем способе что предложил я. Всем спасибо за помощь.
|
|||
|
||||
| GZep |
|
|||
![]() участник Винграда ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1528 Регистрация: 7.7.2006 Где: Москва Репутация: 1 Всего: 32 |
где-то была на форуме большая тема про события onclick - там, помню, куча материала была по поводу действий при нажатии на ссылки. хотя, может там и нет ничего нужного...
Добавлено через 1 минуту и 10 секунд taral, ну, так поделись своим решением с людьми - интерессно же -------------------- ![]() ![]() |
|||
|
||||
| taral |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 230 Регистрация: 17.1.2008 Репутация: нет Всего: нет |
Ну значит я высказался неясно, за что прошу прощения=) Идея вот в чем. Обычно привязывают событие на document и проверяют если клик был на елементе div (пусть будет div =) ), то ничего не делают. Вы сами это только что написали. Я не знал как это делается и придумал свой способ (чем-то хуже чем-то лучше). На клик по меню у меня повешено событие (отправка данных на сервер.. и прерывание событий) И мне не нужно что бы меню закрывалось как раз при клике на нем. В других местах должно происходить закрытие. Я повесил закрытие на document (нет никаких проверок, происходит клик в любом месте и происходит закрытие (скрываение если быть более точно) ) А при клике на меню происходит отправка, как я уже говорил и прерываются все дальнейшие события. Что имеем в результате. Клик в любом месте кроме меню - закрытие меню. Клик на меню: вызывает 2-а события. По иерархии первым вызывается событие клика по меню. Оно выполняется и прерывает все последующие события. Потому события закрытия меню (что повешено на document ) не выполняется. Результат тот же что и в другом решении (точнее в моем случае разницы нету) Хух кажется расписал как смог=) Не думаю что мой способ лучше (скорее наоборот) но зато отличается и придумал его я сам без подсказок=) Это сообщение отредактировал(а) taral - 9.1.2009, 02:55 |
|||
|
||||
| GZep |
|
|||
![]() участник Винграда ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1528 Регистрация: 7.7.2006 Где: Москва Репутация: 1 Всего: 32 |
taral,
-------------------- ![]() ![]() |
|||
|
||||
| taral |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 230 Регистрация: 17.1.2008 Репутация: нет Всего: нет |
Вы так говорите будто я пришел и сказал вот у меня есть лучшее решение. Используйте его. Это была просто попытка решить задачу своими силами. Прочитав другие решения мне не показалось что они более быстрые. Значит не хватило знаний. Но в моем случае мне все равно нужно делать прерывание событий при клике, поскольку иначе пользователь перейдет по ссылке. А мне этого не нужно. Но и ссылка должна присутствовать, чтобы поисковики могли через нее ходить (выходит что пользователь увидит результат аяксом, а поисковик перейдет на новую страницу с тем же результатом.) Это сообщение отредактировал(а) taral - 9.1.2009, 03:11 |
|||
|
||||
| GZep |
|
|||
![]() участник Винграда ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1528 Регистрация: 7.7.2006 Где: Москва Репутация: 1 Всего: 32 |
сами себе противоречите. -------------------- ![]() ![]() |
|||
|
||||
| ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 48 Всего: 386 |
чего-то темы с меню уже немного достали.
Вот относительно несложная и достаточно корректная реализация меню для jQuery. Переписать ее на prototype, наверное, не составит большого труда. Это меню, в принципе позволяет даже несложно анимировать открытие-закрытие меню.
Основная мысль: на элемент, представляющий собой меню, навешивается пара функций - открыть-закрыть. Тот, кому надо меню показать обязан найти элемент и вызвать его метод "show_menu". Чего непонятно - можно спрашивать P.S. Я отчего-то не люблю вставляться в jQuery'евские плагины... -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! |
|||
|
||||
| taral |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 230 Регистрация: 17.1.2008 Репутация: нет Всего: нет |
GZep
И где противоречия? Быстрота это конечно хорошо. Но быстрота не == лучше. Когда я посмотрел другие решения. Мне они не показались более быстрыми. Я так и сообщил. Но те решения проверенны временем и практикой. Мое же решение было написано на скорую руку.
Очень даже логично. Я не чувствую себя в javaScript как рыба в воде, я больше по серверным языкам. Потому я прекрасно понимаю что если мне кажется что решения одинаковые это не обязательно так. Так что вы сами тут что-то напутали.. И еще у меня к вам вопрос. Неужели прерывание события так сильно тормозит? Добавлено @ 02:09 ksnk Спасибо. Обязательно посмотрю код. Это сообщение отредактировал(а) taral - 10.1.2009, 02:10 |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | JavaScript: для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |