1
<div id="main">
hello world
<div id="second-div">
bye
</div>
</div>

jQuery('#main:not(second-div)').click(function() {
alert('works!');
});

「メイン」div でのマウス クリックを検出したいのですが、「2 番目の div」div をクリックしてもクリック イベントはトリガーされません。「:not(second-div)」を使用してみましたが、とにかくクリックがトリガーされます。

4

5 に答える 5

3

イベントの対象プロパティを確認できます。(コメントからの改善提案を反映するように編集)

jQuery('#main').click(function(e) {
    if(e.target===this) {
        alert("works!");
    }
});​

http://jsfiddle.net/rZeXa/

于 2012-07-31T08:42:58.107 に答える
2

私はこれが変だと知っています。

$(document).ready(function(){
       $(this).click(function(e){
            if($(e.originalEvent.originalTarget).prop('id')=='main'){  
              alert('You have clicked on Main') 
            }
   })                       
 });

今日学んだことを共有したかっただけです。

于 2012-07-31T08:59:55.673 に答える
2

ダニエルによって提供されたもののような同様の解決策。私はいつもisこのように識別するために使用します:

jQuery('#main').click(function(event) {
  if(!$(event.target).is('#second-div'))
   {
     alert('works');
   }
}); 
于 2012-07-31T09:45:41.177 に答える
2

または、これを試すこともできます: http://jsfiddle.net/N6G62/

これは原因を助けるはずです:)

コード

$('#main').click(function(e) {

    alert('works!');

});


$('#main div').click(function(e) {
     e.stopPropagation();
});

​
于 2012-07-31T08:45:03.857 に答える
-1

あなたは電話するべきです

    event.stopPropagation();

クリックハンドラーの最初の行に。これにより、階層内のイベントの伝播が停止します。

于 2012-07-31T08:40:28.193 に答える