Javascript / jQuery: как поймать щелчок, который нацелен на любой элемент, кроме нескольких указанных элементов? - PullRequest
0 голосов
/ 13 апреля 2011

Вопрос, вероятно, сформулирован очень запутанно, поэтому вот небольшой пример http://www.andytimney.com/projects/jquerydropdown/ если вы нажмете «Архив», появится раскрывающийся список. Теперь, если вы хотите закрыть его, вам нужно снова нажать «Архив». Однако я хочу закрыть его любым кликом, который не нацелен на «Вариант 1», «Вариант 2». Аналогично тому, как это делает Facebook, если щелкнуть меню «Аккаунт» в правом верхнем углу.

Единственное решение, которое мне приходит в голову, это привязать функцию onClick к одному или, если это не сработает, ко всем элементам, присутствующим на странице, кроме нескольких элементов, которые я укажу. Это решение кажется мне немного хакерским, поэтому мне интересно, есть ли более разумное решение, которого мне не хватает.

Ответы [ 3 ]

2 голосов
/ 13 апреля 2011

Прикрепите событие клика к телу и проверьте, не был ли выбранный элемент недоступен:

$('body').click( function(e) {
                if(!$(e.target).parents('.option').length && !$(e.target).hasClass('.option')) {
                    $('.archive').hide();
                }
            });
2 голосов
/ 13 апреля 2011
0 голосов
/ 13 апреля 2011

пробовали ли вы щелкнуть документ и остановить распространение события, когда щелчок по меню активирован? интересная статья о событиях пузырей http://www.quirksmode.org/js/events_order.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...