скрытие контекстного меню при событии onblur в jquery - PullRequest
0 голосов
/ 20 сентября 2009

Кто-нибудь пытался успешно скрыть контекстное меню на событии blur? Что я хочу сделать, это скрыть пользовательское меню правой кнопки мыши, когда мышь не находится внутри контекстного меню div.

Используется плагин контекстного меню jquery.

Ответы [ 3 ]

1 голос
/ 20 июня 2013

Если вы хотите знать, когда фокус покидает область контейнера, но не иметь дочерних элементов управления внутри контейнера, вызывать событие, используйте mouseleave.

$('#menu').on('mouseleave', function(){
  $(this).hide();
});

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

0 голосов
/ 20 сентября 2009

Вы явно упоминаете событие blur, но я не думаю, что это действительно то, что вам нужно, поскольку упомянутое вами контекстное меню div, вероятно, никогда не будет сфокусированным или размытым.

Вы должны использовать событие mouseout:

Предполагая, что ваше контекстное меню имеет идентификатор 'contextMenuContainer', это должно охватывать его:

$('#contextMenuContainer').mouseout(function() {
    $(this).hide();
});

Подробнее см. Документацию jQuery Events / mouseout .

Обновление:

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

0 голосов
/ 20 сентября 2009

Используйте размытие с обратным вызовом. Это не проверено все же. Хотите восстановить функциональность правой кнопки мыши на другом размытии? Я думаю, что это будет лучше выполнено на других типах событий.

$("input").blur(function () {
     window.oncontextmenu = function () {
        return false;
     }
});
...