1

一部のdivにもクリックを付けると$(this)、Chromeコンソールで印刷でき、そこにjqueryオブジェクトが表示されます。

コンソールのスクリーンショット http://jsbin.com/iyozap/1/edit

ただし、クリックされた最上位のdomノードのみを取得しようとしています。だから私stopPropagation()は関数で使用しようと思いました

$(document).ready(function(){
  $('body').on('click', '*', function(){
    console.log($(this));
  });
});

しかし、イベントを関数に渡すときはいつでも $('body').on('click', '*', function(event){

$(this)コンソールにとして印刷されます[object Object]event不思議なことに、後で関数からとを削除してもevent.stopPropagation()、コンソールはまだ印刷され[object Object]ます。

クラスのdivで発生する場合を除いて、本文のすべての部分のクリックを登録しようとしていますが、jqueryとそれに対応avoidするものを把握していないようです。内部で見ることができるjqueryオブジェクトから、渡されたときだけにどのように変化しますか?クラス内で発生しないクリックのみを登録するためにどのように使用できますか?eventstopPropagation()$(this)[object Object]eventavoid

4

3 に答える 3

2
$("body").on('click', '*' ...

すべての要素に委任します。これをやりたいだけだと思います:

$("body").on('click', '.avoid', function (e) {
   e.stopPropagation();
}).on('click', function () {
   console.log('body clicked');
});

http://jsfiddle.net/ExplosionPIlls/YZcP7/

于 2013-01-31T00:45:52.713 に答える
0

あなたは正しい方向に進んでいましたstopPropagation()。次のように、特定のイベントにバインドする必要がありました。

$(document).ready(function(){
  $('body').on('click', '*', function(e){
    console.log($(this));
    e.stopPropagation();
  });
});

eイベントオブジェクトはどこにありますか。現在は正常に動作しています。更新されたjsbinは次のとおりです:http: //jsbin.com/iyozap/9/edit

于 2013-01-31T00:48:26.327 に答える
0

彼はクリックされたオブジェクトも無関心にしたいと思っていると思います

$(document).ready(function(){
  $('body > *').click(function(){
    console.log( $(this) );
  });
});
于 2013-01-31T00:49:53.287 に答える