обнаружение, если щелчок не является определенным div - PullRequest
1 голос
/ 28 сентября 2011

Я разрабатываю своего рода горизонтальное меню, но видимое при щелчке и скрываемое при щелчке, но видимое, когда щелчок по какой-то стрелке, а скрытие, когда щелчок по документу, но не по некоторому контейнеру div. В этом контейнере div есть также некоторые другие элементы. Если мы напишем document.onclick = closefunction, тогда он закроет, щелкнет ли пользователь сам в этом div. Я хочу вызвать closefunction, когда пользователь щелкает в любом месте, но не в самом div или стрелке.

Кажется, что будут его решения, но я не нашел, поэтому размещаю их здесь. Пожалуйста, ответьте.

заранее спасибо, ребята.

Ответы [ 3 ]

1 голос
/ 28 сентября 2011

Вы можете использовать jQuery closest (), чтобы увидеть, находится ли щелчок внутри меню: http://api.jquery.com/closest/

$('body').click(function(e){
  if($(e.target).closest('.myMenuDiv,.myMenuArrow').length === 0){
    // Close it
  }
});
1 голос
/ 28 сентября 2011

Вы можете использовать функцию jQuery is (), чтобы определить, соответствует ли текущая цель определенному селектору:

$('ul.container li').click(function(e){
    if ($(e.target).is('.dropdown')) {
        //do something when clicked inside dropdown
    }
})
1 голос
/ 28 сентября 2011

с помощью Prototype вы можете сделать что-то вроде этого

    document.observe('click', function(ev) {
        var el = Event.element(ev);
        if ((el !== $('thediv'))
                && !el.descendantOf(thediv)) {
            // hide div here
        }
    });
...