JavaScript イベント system_javascript スキル

WBOY
リリース: 2016-05-16 18:22:43
オリジナル
1045 人が閲覧しました
イベント ストリーム
JavaScript イベントはストリームの形式で存在し、複数の要素が同時にイベントに応答します。場合によっては、これは
が望んでいることではなく、バインディング イベントに応答する特定の要素が必要なだけです。

イベント分類
イベントのキャプチャ (IE 以外)、バブリング イベント (すべてのブラウザでサポート)


イベントのキャプチャは自動です トップダウン、一方、バブリングイベントはボトムアップです。以下に、それを直感的に表現するために図を使用します。
JavaScript イベント system_javascript スキル
私たちの仕事ではバブリングイベントに遭遇することがよくありますが、

を作成したい場合、イベントのキャプチャはどのように実行できますか? IE ブラウザでイベントをキャプチャするには、addEventListener の 3 番目のパラメータを true に設定するだけです。

例は次のとおりです。 Link
JavaScript イベント system_javascript スキル
ID が div1 と div2 の 2 つの要素は、次のようにキャプチャ フェーズでイベント ハンドラー関数にバインドされます。 div1 がクリックされました ( #div2 (黄色の領域) をクリックすると、「div1」が警告されます。
#div2 (黄色の領域) がクリックされた場合、最初に「div1」が警告され、次に「div2」が警告されますイベントキャプチャフェーズでは、イベントはルート要素から下方向に伝播されるため、#div1 は #div2 の親要素であるため、当然、#div1 にバインドされたクリックイベントは #div2 のクリックイベントより前に実行されます。
バブリングイベントの例:

コードをコピー コードは次のとおりです。 ! DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
バブル イベント



Click


div id="コンソール" style="border:solid 1px #ee0; background:#ffc;">

>
この例から、イベントがターゲット要素 P からボディ要素までバブルアップしていることがはっきりとわかります。


イベントのバブリングを防止します

次の関数は、IE およびその他のブラウザーと互換性があり、イベントのバブリングを防止します




コードをコピー


コードは次のとおりです:


function stopBubble(e) {
//イベント オブジェクトが提供されている場合、これは非 IE ブラウザです
if ( e && e.stopPropagation )
IE には stopPropagation メソッドはありませんが、window.event.cancelBubble を通じてイベントバブリングを防ぐことができます。


リスニング関数
IE:attachEvent、detachEvent

非IE:addEventListener、removeEventListener

上記の4つの関数に加えて、さらに一般的なメソッド: document.getElmentById(要素 ID).onclick = function(){}

イベント オブジェクト
イベントがトリガーされたとき、リスニング関数の実行でイベント オブジェクトを取得するにはどうすればよいですか関数? IE では window.event.srcElement を使用し、IE 以外のブラウザでは e.currentTarget を使用します

コード例:




コードをコピー


コードは次のとおりです:


btn.onclick = ctdClickEvent;

function ctdClickEvent(e)
{ if( !-[1,] ) //IE { var readonly = "readOnly"; var obj = window.event.srcElement; }else{ //IE 以外 var readonly = "readonly" ;
var obj = e.currentTarget;

var id = obj.id.replace("btn_",""); =" この項目は非更新に変更されました" )
{
....
}else{
.....
}
sumPrice();
}

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のおすすめ
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート