2016-12-20 3 views
0

ボディクリックにクラスを切り替えたいと思っています。しかし、クラス "mainDIV"を持つ特定のDIVが同じボディに反映されている場合は、 そのDIVのボディクリックイベントを除外します。そのため、ユーザーが「mainDIV」をクリックしたときに、本文のクリックイベントが発生してはならない。Click eeventでボディからクラスを除外する

私はjQueryのでは、このコードを使用していますが、そのは動作していない:

$("body :not(.mainDIV)").bind("click", function() { 
    $('.offerClass').show(); 
}); 
+0

:あなたがアップdocumentにイベントバブルを聞かせた後、このように、イベントのtargetで参照される要素にクラスを確認することができ、あなたの問題を解決するために

? –

+0

body要素に '.mainDIV'クラスが設定されていますか?それはあなたの質問から本当にはっきりしません。 – LuudJacobs

+0

@LuudJacobs.maindivクラスはボディには適用されません。体の真ん中にはそれが適用されるdivがあります。 – Raj

答えて

0

bind()方法は、そうではなくon()方法で行く方が良いでしょうjQueryの3.0に廃止されました。

bodyでイベントをバインドし、メソッドを使用して.mainDIVメソッド内でクリックしたときにイベントのバブリングを防止します。

$("body").on("click", function() { 
    $('.offerClass').show(); 
}).on('click','.mainDIV',function(e){ 
    e.stopPropagation(); 
}); 
0

まず、bind()は非難されました。代わりにon()を使用してください。動作していないものを

$(document).on("click", function(e) { 
    if (!$(e.target).hasClass('mainDIV')) 
    $('.offerClass').show(); 
}); 
+0

'.mainDIV'内にネストされた要素がある場合??それらをターゲットにする機会があります( 'e.target').....追加の条件'!$(e.target).closest( '。mainDIV')。length'はうまくいくと思います –

関連する問題