19

問題は、「onClickOut」-Eventが必要なことでした。

例: ホバリング (onMouseOver) ボタンなどで DIV を表示しています。

要素の外側をクリックすると非表示にする必要がありますが、$("body").clickと言うと、要素自体をクリックすると非表示になります。:/

これで、マウスの位置をリッスンし、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

4 に答える 4

1

#schnellsuche_box次のようにして、クリックイベントがクリックイベントにバブリングするのを停止する必要がありbodyます(これはデフォルトのイベント伝播です)return false

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

    return false;
});
于 2013-08-21T10:06:42.973 に答える
0

これを試して:

$("body").click(function(e) {
   var $target = $(e.target);
   if (!$target.is('#schnellsuche_box') &&
       !$target.parents('#schnellsuche_box').length) {
       alert('outside');
   }
});
于 2013-08-21T10:11:13.630 に答える
0
$("#schnellsuche_box").on("click",function(event) {
  event.preventDefault();
  event.stopPropagation();
});
于 2013-08-21T10:17:53.857 に答える