2010-01-14 4 views
2

Когда Контекстное показано,jQuery проблема при реализации contextmenu?

, если пользователь нажмет из Контекстных,

должен скрывать его.

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

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

ответ

1

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

jQuery(document).click(function(event) { 
    if(event.target==$('context-menu'){ 
    $('context-menu').hide(); 
    $(this).unbind('click'); 
    } 
}): 
+0

Мне нужно, чтобы очистить этот слушатель сразу прятался. – user198729

+0

Я только что обновил ответ, чтобы добавить unbind, вы, вероятно, захотите прикрепить этот обработчик кликов к документу всякий раз, когда отображается контекстное меню. –

2

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

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

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

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

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

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

Вот отрывок из какого-то рабочего кода:

document.onclick = Tree.hideContext; 

    Tree = { 
     hideContext: function() { 
      $("#context").hide(); 
     } 
    } 
Смежные вопросы