//阻止事件冒泡的兼容写法 function stopBubble(e){ //如果提供了事件对象,则是一个非IE浏览器 if(e && e.stopPropagation) //因此它支持W3C的stopPropagation()方法 e.stopPropagation(); else //否则,我们需要使用IE的方式来取消事件冒泡 window.event.cancelBubble = true; }
1 <!doctype html> 2 <html> 3 <head> 4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> 5 <title>js事件冒泡 </title> 6 <meta name="keywords" content=""/> 7 <meta name="description" content=""/> 8 9 <style type="text/css"> 10 *{margin:0;padding:0;} 11 body{font-size:16px;font-family:"微软雅黑";color:#666; 12 background:#fff; 13 } 14 #tab{width:100%;margin:60px auto;;} 15 #tab td{height:35px;line-height:35px;text-align:center;} 16 </style> 17 </head> 18 <body> 19 20 21 22 23 <table id="tab" border="1"> 24 <tr> 25 <td><input type="checkbox" /></td> 26 <td>111</td> 27 <td>222</td> 28 <td>333</td> 29 <td>444</td> 30 <td>555</td> 31 <td> 32 <a href="javascript:;" onclick="del(event);">删除</a> 33 <a href="javacsript:;" onclick="edit(event);">编辑</a> 34 </td> 35 </tr> 36 <tr> 37 <td><input type="checkbox" /></td> 38 <td>111</td> 39 <td>222</td> 40 <td>333</td> 41 <td>444</td> 42 <td>555</td> 43 <td> 44 <a href="javascript:;" onclick="del(event);">删除</a> 45 <a href="javacsript:;" onclick="edit(event);">编辑</a> 46 </td> 47 </tr> 48 <tr> 49 <td><input type="checkbox" /></td> 50 <td>111</td> 51 <td>222</td> 52 <td>333</td> 53 <td>444</td> 54 <td>555</td> 55 <td> 56 <a href="javascript:;" onclick="del(event);">删除</a> 57 <a href="javacsript:;" onclick="edit(event);">编辑</a> 58 </td> 59 </tr> 60 <tr> 61 <td><input type="checkbox" /></td> 62 <td>111</td> 63 <td>222</td> 64 <td>333</td> 65 <td>444</td> 66 <td>555</td> 67 <td> 68 <a href="javascript:;" onclick="del(event);">删除</a> 69 <a href="javacsript:;" onclick="edit(event);">编辑</a> 70 </td> 71 </tr> 72 <tr> 73 <td><input type="checkbox" /></td> 74 <td>111</td> 75 <td>222</td> 76 <td>333</td> 77 <td>444</td> 78 <td>555</td> 79 <td> 80 <a href="javascript:;" onclick="del(event);">删除</a> 81 <a href="javacsript:;" onclick="edit(event);">编辑</a> 82 </td> 83 </tr> 84 </table> 85 <script type="text/javascript"> 86 //点击td给tr加上一个背景色,同时选中checkbox 87 var tdDoms = document.querySelector("table").getElementsByTagName("td"); 88 for(var i=0;i<tdDoms.length;i++){ 89 tdDoms[i].addEventListener("click",function(){ 90 var mark = this.parentElement.querySelector("input").checked; 91 if(!mark){ 92 this.parentElement.style.background = "red"; 93 this.parentElement.querySelector("input").checked = true; 94 }else{ 95 this.parentElement.removeAttribute("style"); 96 this.parentElement.querySelector("input").checked = false; 97 } 98 }); 99 } 100 101 function del(e){ 102 alert(9); 103 //e.stopPropagation(); 104 stopBubble(e); 105 } 106 107 function edit(e){ 108 alert(8); 109 stopBubble(e); 110 } 111 //阻止事件冒泡的兼容写法 112 function stopBubble(e){ 113 //如果提供了事件对象,则是一个非IE浏览器 114 if(e && e.stopPropagation) 115 //因此它支持W3C的stopPropagation()方法 116 e.stopPropagation(); 117 else 118 //否则,我们需要使用IE的方式来取消事件冒泡 119 window.event.cancelBubble = true; 120 } 121 </script> 122 </body> 123 </html>