用JS阻止事件冒泡

 事件冒泡: 当一个元素上的事件被触发的时候,比如说鼠标点击了一个按钮,同样的事件将会在那个元素的所有祖先元素中被触发。这一过程被称为事件冒泡;这个事件从原始元素开始一直冒泡到DOM树的最上层。

可以用JS来阻止js事件冒泡。因为浏览器的差异IE和FF的JS写法有点不一样。 IE用cancelBubble=true来阻止而FF下需要用stopPropagation方法。 下一下完整的代码:

 

[html]
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
  2. <htmlxmlns="http://www.w3.org/1999/xhtml"> 
  3. <head> 
  4. <metahttp-equiv="Content-Type"content="text/html; charset=utf-8"/> 
  5. <title>无标题文档</title> 
  6. <scripttype="text/javascript"> 
  7. function aaaclick(){ 
  8.     alert("td click"); 
  9. function bbbclick(evt){ 
  10.     alert("td click"); 
  11.     if (window.event) { 
  12.         event.cancelBubble = true
  13.     }else if (evt){ 
  14.         evt.stopPropagation(); 
  15.     } 
  16. function trclick(){ 
  17.     alert("tr click"); 
  18.  
  19. function tableclick(){ 
  20.     alert("table click"); 
  21. </script> 
  22.  
  23. <styletype="text/css"> 
  24. <!-- 
  25. .tab { 
  26.     border: 1px solid #0066FF; 
  27.     cellpadding:0px; 
  28.     cellspacing:0px; 
  29. .tab td{ 
  30.     border: 1px solid #0066FF; 
  31. --> 
  32. </style> 
  33. </head> 
  34.  
  35. <body> 
  36. <p>点击aaaa会触发上层的onclick事件,点击bbbb不会触发上层onclick事件</p> 
  37. <tablewidth="204"onclick="tableclick()"class="tab"> 
  38.   <tr> 
  39.     <tdwidth="96"></td> 
  40.     <tdwidth="96"></td> 
  41.   </tr> 
  42.   <tronclick="trclick()"> 
  43.     <tdonclick="aaaclick()">aaaa</td> 
  44.     <tdonclick="bbbclick(event)">bbbbb</td> 
  45.   </tr> 
  46.   <tr> 
  47.     <td></td> 
  48.     <td></td> 
  49.   </tr> 
  50. </table> 
  51.  
  52. </body> 
  53. </html> 
posted @ 2013-03-29 11:16  wansimin  Views(135)  Comments(0)    收藏  举报