Проблема события jQuery при реализации контекстного меню? - PullRequest
2 голосов
/ 14 января 2010

Когда отображается контекстное меню,

, если пользователь выходит из контекстного меню,

должен скрыть это.

Как реализовать этот функционал?

Можно ли прослушивать click_out, а когда он обнаружен, скрыть контекстное меню и очистить этого слушателя?

Ответы [ 3 ]

2 голосов
/ 14 января 2010

Вы можете привязать к body.click, чтобы скрыть его. Любое событие щелчка на любом другом элементе в конце концов всплывает в теле:

$('body').click(function() {
   $('#menu').hide();
});

В приведенном выше примере предполагается, что ваше пользовательское меню имеет идентификатор «menu». Заменить при необходимости.

В зависимости от того, как работает ваше меню (если у вас есть вложенные меню, вы можете щелкнуть, чтобы открыть), вы можете привязать что-то к щелчкам внутри него, чтобы остановить событие, используя e.stopPropagation();

Чтобы очистить слушателя вы можете сделать:

$('body').click(function() {
   $('#menu').hide();
   $(this).unbind('click');
});
1 голос
/ 14 января 2010

Вы можете добавить обработчик onclick к документу и затем проверить, является ли цель события меню или нет. Если щелчок находится в меню, ничего не делать, если не скрывать.

jQuery(document).click(function(event) {
  if(event.target==$('context-menu'){
    $('context-menu').hide();
    $(this).unbind('click');
  }
}):
0 голосов
/ 15 января 2010

Вот фрагмент рабочего кода:

document.onclick = Tree.hideContext;

    Tree = {
        hideContext: function() {
            $("#context").hide();
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...