Подтвердить что ты не робот

onClickOut (нажмите после выхода из элемента)

Проблема в том, что мне нужен "onClickOut" -Event.

Например: у вас есть просмотр DIV при зависании (onMouseOver) некоторой кнопки или что-то еще.

Если вы выберете элемент, который нужно скрыть, но если вы скажете " $" ("тело"), щелкните его также будет скрыто, когда вы нажмете на сам элемент. :/

Теперь я слушаю mouseposition, и когда mouseleave() я устанавливаю var, нажимая на мой элемент. На следующем шаге я слушаю обычный клик -Event (тело), но я спрашиваю, был ли установлен параметр var. Если нет, это должен быть клик вне моего элемента, поэтому я могу скрыть свой элемент.

Надеюсь, вы можете использовать его:

$("#schnellsuche_box").mouseleave(function() {
    var inside;
    $("#schnellsuche_box").click(function() {
        inside = true;
    });
    $("body").click(function() {
        if(!inside) {
            $("#schnellsuche_box").hide();
        }
    });
    delete inside;
});
4b9b3361

Ответ 1

Вы делаете это, прослушивая щелчок на уровне документа, и внутри обработчика событий вы проверяете, был ли элемент с #schnellsuche_box или любой элемент внутри #schnellsuche_box с помощью closest(), например:

$(document).on('click', function(e) {
    if ( ! $(e.target).closest('#schnellsuche_box').length ) 
         $('#schnellsuche_box').hide();
});

FIDDLE

Ответ 2

Вам нужно остановить событие #schnellsuche_box от пузырьков до события щелчка body (это распространение по умолчанию), сделав return false:

$("#schnellsuche_box").click(function() {
    inside = true;

    return false;
});

Ответ 3

Попробуй это:

$("body").click(function(e) {
   var $target = $(e.target);
   if (!$target.is('#schnellsuche_box') &&
       !$target.parents('#schnellsuche_box').length) {
       alert('outside');
   }
});

Ответ 4

$("#schnellsuche_box").on("click",function(event) {
  event.preventDefault();
  event.stopPropagation();
});