4

jquery で :not click イベントを取得しようとしています。基本的に、ライトボックスを構築しようとしています。正常に動作しますが、黒いスペースをクリックした場合にのみ閉じてください。画像がクリックされた場合、ライトボックスは非表示にしないでください。

例を参照してください: http://jsfiddle.net/nrUCc/7/ 私はこれを試しました: (js 列の 42 行目)

 $('#lightbox').not('#lightbox img').click(function(e){
        $(this).css('display','none');
 })

..でも、画像をクリックするとトリガーされます。

助言がありますか?ありがとう

4

1 に答える 1

1

thisターゲット要素を次のものと比較できます。

$('#lightbox').click(function(e) {
    if (e.target === this) { 
        $(this).css('display','none');
    }
});

e.targetclickはハンドラをトリガーした要素です。this#lightbox要素です。したがって、基本的には、クリックされclickたときにのみハンドラーをトリガーすると言っています。#lightboxこれにより、他の子要素が上記のハンドラー#lightboxをトリガーすることも防止されます。click

ここにフィドルがあります


別の方法として、要素に別のclickハンドラーを追加し、クリック イベントが伝播して上記をトリガーするのを単純に停止します。#lightbox > img

$('#lightbox > img').click(function(e) {
    e.stopPropagation();
});
于 2013-05-03T13:16:40.313 に答える