如下:在父类中添加click事件,当点击子类的时候通过冒泡原理触发父类事件。
<!-- html页面 --><ul id="parent-list"> <li>Item 1</li> <li>Item 2</li> <li>Item 3</li> <li>Item 4</li></ul>JQuery: // delegate 的方法需要三个参数,一个选择器,一个事件名称,和事件处理函数$("#parent-list").delegate("li", "click", function(){ if (this.nodeName.toLowerCase() == 'li') { alert(this.innerHTML); }});$("#parent-list").bind('click', function(e) { var el = e.target; if (el.nodeName.toLowerCase() == 'li') { alert(el.innerHTML); }});$("#parent-list").click(function(e) { var el = e.target; if (el.nodeName.toLowerCase() == 'li') { alert(el.innerHTML); }});JavaScript:window.onload = function() { var oUl = document.getElementById("parent-list"); oUl.onclick = function(ev) { var ev = ev || window.event; var target = ev.target || ev.srcElement; if (target.nodeName.toLowerCase() == 'li') { alert(target.innerHTML); } }}// addEventListener() 方法用于向指定元素添加事件句柄。window.onload = function() { var oUl = document.getElementById("parent-list"); oUl.addEventListener('click', function() { var ev = ev || window.event; var target = ev.target || ev.srcElement; if (target.nodeName.toLowerCase() == 'li') { alert(target.innerHTML); } });}优点: 1、节省内存占用,减少事件注册,提高性能。 2、可以实现当新增子对象时无需再次对其绑定事件,对于动态内容部分尤为合适
缺点:事件代理的应用常用应该仅限于上述需求下,如果把所有事件都用代理就可能会出现事件误判,即本不应用触发事件的被绑上了事件。
新闻热点
疑难解答