jQueryのイベントバブリングとtargetプロパティ
jQueryではイベントバブリングと呼ばれる仕組みがあります。
イベントバブリングとはある要素Aでイベントが発生すればそのイベントは要素Aの親要素にも伝わっていくことを言います。
以下、例です。「あいうえお」と「かきくけこ」の部分をクリックするとアラートされます。
<script type="text/javascript">
$(function(){
$("tr").click(function(){
alert("クリック");
})
});
</script>
<table id="a">
<tr id="b"><td>あいうえお</td></tr>
<tr id="c"><td>かきくけこ</td></tr>
</table>
子要素のイベントが親要素に伝わるわけですから、最初から親要素にイベント処理を記述するのと同じことになります。
以下のように書き換えてもテーブル内をクリックするとアラートされます。
<script type="text/javascript">
$(function(){
$("#a").click(function(e){
alert("クリック");
})
});
</script>
<table id="a">
<tr id="b"><td>あいうえお</td></tr>
<tr id="c"><td>かきくけこ</td></tr>
</table>
clickイベント内ではtargetというものがあります。
targetを使うとクリックイベントが発生する子要素のみを取得することができます。
<script type="text/javascript">
$(function(){
$("#a").click(function(e){
alert($(e.target).html());
})
});
</script>
<table id="a">
<tr id="b"><td>あいうえお</td></tr>
<tr id="c"><td>かきくけこ</td></tr>
</table>
KHI入社して退社。今はCONFRAGEで正社員です。関西で140-170/80~120万から受け付けております^^
得意技はJS(ES6),Java,AWSの大体のリソースです
コメントはやさしくお願いいたします^^
座右の銘は、「狭き門より入れ」「願わくは、我に七難八苦を与えたまえ」です^^
コメント