JAvascriptイベントの少しの悟り
2689 ワード
JAvascriptバブルイベントの理解は一般的に次のようになります.
例えば、ページにはBODYにDIVが含まれており、DIVにはBUTTONが含まれています.BODY,DIV,BUTTONではいずれもONCLICKイベントがあり,BUTTONではもう1つのONCLICKイベントがある.それでは、BUTTONをクリックすると、先にBUTTONのイベントを実行します.
次にDIVのイベントを実行するBODYのイベントを実行する.これがJAVASCRITTの事件です.JQUERYはこのような事件の泡だけを支持しているようだ.
しかし、BODYのクリックイベントを先に実行してからBUTTONのクリックイベントを実行したい場合は、どうすればいいですか?
以下は私のイベントリスニングコードです.
ここで私は強引にイベントの傍受を追加して、trueとfalseというパラメータに注意して、元のイベントの泡の流れを破ることができます.TRUEは外層のイベントを先に実行し、FALSEであれば元の実行方式を保持する.
例えば、ページにはBODYにDIVが含まれており、DIVにはBUTTONが含まれています.BODY,DIV,BUTTONではいずれもONCLICKイベントがあり,BUTTONではもう1つのONCLICKイベントがある.それでは、BUTTONをクリックすると、先にBUTTONのイベントを実行します.
次にDIVのイベントを実行するBODYのイベントを実行する.これがJAVASCRITTの事件です.JQUERYはこのような事件の泡だけを支持しているようだ.
しかし、BODYのクリックイベントを先に実行してからBUTTONのクリックイベントを実行したい場合は、どうすればいいですか?
以下は私のイベントリスニングコードです.
<html>
<head>
<title></title>
</head>
<body id='bodye'>
<input type="button" value="test" id="test" />
</body>
<script type="text/javascript">
function bodyEvent(){
alert('body');
}
function buttonEvent(){
alert('button');
}
document.body.onclick=bodyEvent;
document.getElementById("test").onclick=buttonEvent;
// , BUTTON, BODY
</script>
</html>
document.body.addEventListener("click", function(){
alert(this.id);
}, false);
document.getElementById("test").addEventListener("click",function(){
alert(this.id);
},true);
document.getElementById("div").addEventListener("click",function(){
alert(this.id);
},true);
ここで私は強引にイベントの傍受を追加して、trueとfalseというパラメータに注意して、元のイベントの泡の流れを破ることができます.TRUEは外層のイベントを先に実行し、FALSEであれば元の実行方式を保持する.