onClickOut(离开元素后点击)

时间:2013-08-21 10:03:11

标签: javascript jquery

问题是我需要“onClickOut”-Event

例如: 你有一个DIV观看悬停(onMouseOver)一些按钮或什么。

如果你点击它需要隐藏的元素外面,但如果你说 $(“body”)。点击它也会在你点击元素本身时被隐藏。 :/

现在我听了鼠标定位,当 mouseleave()我在点击我的元素时设置了一个var。在下一步中,我会听一个基本的点击事件(正文),但我会问var是否已设置。如果不是它必须在我的元素之外点击,所以我可以隐藏我的元素。

我希望你能用它:

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

4 个答案:

答案 0 :(得分:3)

您可以通过点击文档级别来执行此操作,并在事件处理程序中使用#schnellsuche_box检查点击的元素是#schnellsuche_box还是closest()内的任何元素,像这样:

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

FIDDLE

答案 1 :(得分:1)

您需要通过执行#schnellsuche_box来阻止body点击事件冒泡到return false点击事件(默认事件传播):

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

    return false;
});

答案 2 :(得分:0)

试试这个:

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

答案 3 :(得分:0)

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