2013-12-24 5 views
2

У меня есть две кнопки на моей форме. Пользователь нажимает на любую из кнопок, и выпадающее изображение отображается для соответствующей кнопки. Теперь пользователь щелкает случайным образом в любом месте формы. Поэтому теперь я хочу, чтобы выпадающее меню было скрыто..not() function in jQuery

Мой код имеет:

$('html').not("button.btn.dark.dropdown.copy").on 'click', (e) -> 
    if $('ul.drop-menu.copy-menu').css('display') != 'none' 
     $('ul.drop-menu.copy-menu').hide() 

$('html').not("button.btn.dark.dropdown.move").on 'click', (e) -> 
    if $('ul.drop-menu.move-menu').css('display') != 'none' 
     $('ul.drop-menu.move-menu').hide() 

В приведенном выше коде, он отлично работает для кнопки перемещения, но не работает кнопка копирования. Я не могу найти причину этого. Любая помощь приветствуется.

+1

проверка целевого существования с 'e.target'! –

+4

Вы выбираете все элементы 'html', которые не являются элементами' button.btn.dark.dropdown.move', то есть вы по-прежнему выбираете корень 'html'. Вам нужно проверить внутри обратного вызова, чтобы определить, была ли цель события в согласованном селекторе. – zzzzBov

+2

из-за javascript по строчной иерархии, только последняя работа будет работать. вы должны использовать цель, как указано выше, и сделать выбор в документе не на html. – abhijit

ответ

2

Проверить Ближайшей целью с в селекторе,

Пусть ваше всплывающее окно показывает содержимое внутри .popup класс затем использовать это имя класса для проверки целевого

$('body').click(function (e) { 
    if (!$(e.target).closest('.popup').length) { // exists only when you click on popup area otherwise will return false and will hide popup 
     $('ul.drop-menu.move-menu').hide() 
    } 
})