事件委托

事件委托简单例子

Source
Output
QRCode
<!DOCTYPE html> <html> <head> <meta name="viewport" content="width=device-width,initial-scale=1"> <meta charset="utf-8"> <style> body{ background: #fff; } button { margin: 10px; } div { color: blue; font-weight: bold; } span { color: red; } </style> <script src="//g.alicdn.com/kissy/k/5.0.1/seed.js" data-config="{combine:true}"></script> </head> <body> <div class='out' id='i4'> <div class='inner' id='i3'> <div class='inner' id='i1'> <button id='click_button'>click me</button> </div> </div> </div> <div id='log'></div> <script> require(['node'], function (Node) { var $ = Node.all; $('#i4').delegate('click', '.inner', function (e) { var target = e.target, currentTarget = e.currentTarget; $('#log').prepend("<div style='margin:5px;'>invoked : <br/> this.id=" + this.id + "<br/>event.target.id=" + target.id + "<br>event.currentTarget.id=" + currentTarget.id + "</div>"); }); }); </script> </body> </html>

事件委托 mouseenter/mouseleave

Source
Output
QRCode
<!DOCTYPE html> <html> <head> <meta name="viewport" content="width=device-width,initial-scale=1"> <meta charset="utf-8"> <style> body{ background: #fff; } button { margin: 10px; } div { color: blue; font-weight: bold; } span { color: red; } </style> <script src="//g.alicdn.com/kissy/k/5.0.1/seed.js" data-config="{combine:true}"></script> </head> <body> <div class='out' id='i4' style='width:300px;height:300px;border:1px solid green;'> i4 <div class='inner' id='i3' style='width:200px;height:200px;border:1px solid red;margin:50px;'> #i3.inner <div class='inner' id='i1' style='width:100px;height:100px;border:1px solid black;margin:50px;'> #i1.inner : try mouse </div> </div> </div> <hr/> <div id='log'></div> <script> require(['node'], function (Node) { var $ = Node.all; $('#i4').delegate('mouseenter mouseleave click', '.inner', function (e) { $('#log').prepend(e.type + " : " + e.currentTarget.id + "<br/>"); }); }); </script> </body> </html>

阻止事件冒泡

Source
Output
QRCode
<!DOCTYPE html> <html> <head> <meta name="viewport" content="width=device-width,initial-scale=1"> <meta charset="utf-8"> <style> body{ background: #fff; } button { margin: 10px; } div { color: blue; font-weight: bold; } span { color: red; } </style> <script src="//g.alicdn.com/kissy/k/5.0.1/seed.js" data-config="{combine:true}"></script> </head> <body> <div class='out' id='i4'> <div class='inner' id='i3'> <div class='inner' id='i1'> <button id='click_button'>click me</button> </div> </div> </div> <div id='log'></div> <script> require(['node'], function (Node) { var $ = Node.all; $('#i4').delegate('click', '.inner', function (e) { var target = e.target, currentTarget = e.currentTarget; $('#log').prepend("<div style='margin:5px;'>invoked : <br/> this.id=" + this.id + "<br/>event.target.id=" + target.id + "<br>event.currentTarget.id=" + currentTarget.id + "</div>"); e.stopPropagation(); }); }); </script> </body> </html>