javascriptはイベントの泡出しとブラウザーのデフォルト行為を阻止します.


javascriptを使ってプログラムを作る時、一つの問題が発生します.これはあなたが事件を追加する時、ブラウザがデフォルトで泡型イベントをトリガするため、トリガしたくないイベントをトリガします.以下の関数でこの問題を解決できます.
 
1.事件の泡立ちを阻止し、捕獲型イベントのトリガメカニズムにする.
1
2
3
4
5
6
7
8
9function  stopBubble(e) { // , IE if  ( e && e.stopPropagation )     // W3C stopPropagation()     e.stopPropagation(); else    // , IE     window.event.cancelBubble = true; } 
2.ボタンを押した後、ボタンがHTMLテキストボックスのオブジェクトに続きますか?
1
2
3
4
5
6
7
8
9
10// function  stopDefault( e ) {     // (W3C)     if  ( e && e.preventDefault )         e.preventDefault();     //IE     else        window.event.returnValue = false;     return  false; } 
次のコードを通して、次の関数の効果を見ます.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62<!DOCTYPE  html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html  xmlns="http://www.w3.org/1999/xhtml">  <head><meta  content="text/html; charset=utf-8" http-equiv="Content-Type" /><title> </title><script  language="javascript" type="text/javascript" src="jquery-1.4.2.js"></script><script  language="javascript" type="text/javascript">$(document).ready(function(){$('div.c1').click(function(e){alert(' div');});$('div.c2').click(function(e){alert(' div');stopBubble(e);});$(document).click(function(e){alert(' document');});$('#txt1').val('123');$('#txt1').click(function(e){stopBubble(e);});$('#txt1').keydown(function(e){stopDefault(e);alert(' '+e.keyCode); });})  function stopBubble(e) { // , IE     if ( e && e.stopPropagation )     // W3C stopPropagation()     e.stopPropagation();      else     // , IE     window.event.cancelBubble = true; } // function stopDefault( e ) {     // (W3C)     if ( e && e.preventDefault )         e.preventDefault();     //IE     else         window.event.returnValue = false;     return false; }</script><style  type="text/css">body{font-size:14px;    }}.c1{    font-family:"Arial Unicode MS"    }.c2{    font-family:helvetica,simsun,arial,clean    }</style></head>  <body>  <div  class="c1"> , C1, .</div><hr/>  <div  class="c2"> , C2, .</div><hr/>  <div><input  id="txt1" name="Text1" type="text" /></div><hr/>  </body></html>上の効果テスト中、
関数1:IE 6.0、FireFox、Chrome、Operaはすべて有効です.
関数二:IEでのテストの効果はとても良いです.Chrome、Operaは無効で、FFにおいて、ボタンを押す場合、
keydown(e){stopDefault(e);alert('はキーの値'+e.keyCodeを押しました);
この話は断点を打って実行して、効果を達成することができます.
また、JQueryライブラリを使って、勉強を始めたばかりなので、ここで使ってみました.簡単な操作です.読めます.
別注参考資料:http://ooxxab.com/javascript-event-bubbling-and-prevent-the-default-behavior-of-the-browser.html 原文の住所:http://www.cnblogs.com/Ren_Lei/archive/2010/09/26/1836130.