2012-04-28 8 views
2

.on()を使用して、地域内で何をクリックしたか教えてください。私がクリックした正確な要素を取得するには、event.stopPropagation()を呼び出してバブリングを止めてくださいが、出力は常に#containerDivとその内容です。

#containerDivでクリックされた内容を正確に確認するにはどうすればよいですか?コードスニペットは、以下である:

$("#containerDiv").on("click",function(event){ 
    event.stopPropagation(); 
    console.log($(this)); 
}); 

答えて

5

使用event.target、ない$(this)。後者は常にハンドラが割り当てられた要素になります。

+0

jfriend00 @:私は唯一の委任イベントに対して適用されると信じています。この場合は1つではありません。 – Ryan

+1

Downvoteが取り消されました。はい、そうです。委任されたイベントに適用されます。彼らは委任されたイベント処理を使いたいと思うように見えるが、彼らは手動でそれをやっている。実際のオブジェクトのセレクタを '.on()'引数として置くだけで、 'event.target'を手動で使う必要はありません。 – jfriend00

+0

@ jfriend00:そうです。私は私の答えに十分なjQueryがないことを知っていたはずです。 ';)' – Ryan

5

イベントをコンテナに取り込むと、イベントには既にがバブリングされています。

2

on()方法を与えてみselector

$("#containerDiv").on("click", "*", function(event){ 
    event.stopPropagation(); 
    console.log($(this)); 
}); 

デモ:http://jsfiddle.net/SnPjS/2/

+0

作品!私はまたそれを行う別の方法を見つけました。 event.stopPropagationの代わりに、event.targetはハンドラをトリガした要素を返します。 – devnill

関連する問題