源码-JavaScript&jQuery交互式前端开发-第6章-事件-使用事件委托
2016-09-27 14:04
1136 查看
示例效果:
JS代码:
HTML代码:
<!DOCTYPE html>
<html>
<head>
<title>JavaScript & jQuery - Chapter 6: Events - Event Delegation</title>
<link rel="stylesheet" href="css/c06.css" />
</head>
<body>
<div id="page">
<h1>List King</h1>
<h2>Buy groceries</h2>
<ul id="shoppingList">
<li class="complete"><a href="itemDone.php?id=1"><em>fresh</em> figs</a></li>
<li class="complete"><a href="itemDone.php?id=2">pine nuts</a></li>
<li class="complete"><a href="itemDone.php?id=3">honey</a></li>
<li class="complete"><a href="itemDone.php?id=4">balsamic vinegar</a></li>
</ul>
</div>
<script src="js/event-delegation.js"></script>
</body>
</html>
CSS代码:(参考:源码-JavaScript&jQuery交互式前端开发-第6章-事件-Focus和blur事件,http://blog.csdn.net/hpdlzu80100/article/details/52651002)
JS代码:
function getTarget(e) { // Declare function if (!e) { // If there is no event object e = window.event; // Use old IE event object } return e.target || e.srcElement; // Get the target of event } function itemDone(e) { // Declare function // Remove item from the list var target, elParent, elGrandparent; // Declare variables target = getTarget(e); // Get the item clicked link /* The book used the following code - but it had two shortcomings - Clicking between list items would remove the whole list - Clicking on italic text would remove the link - not the list item elParent = target.parentNode; elGrandparent = target.parentNode.parentNode; elGrandparent.removeChild(elParent); The next 10 lines improve that example */ if ( target.nodeName.toLowerCase() == "a" ) { // If user clicked on an a element elListItem = target.parentNode; // Get its li element elList = elListItem.parentNode; // Get the ul element elList.removeChild(elListItem); // Remove list item from list } if ( target.nodeName.toLowerCase() == "em" ) { // If the user clicked on an em element elListItem = target.parentNode.parentNode; // Get its li element elList = elListItem.parentNode; // Get the ul element elList.removeChild(elListItem); // Remove list item from list } // Prevent the link from taking you elsewhere if (e.preventDefault) { // If preventDefault() works e.preventDefault(); // Use preventDefault() } else { // Otherwise e.returnValue = false; // Use old IE version } } // Set up event listeners to call itemDone() on click var el = document.getElementById('shoppingList');// Get shopping list if (el.addEventListener) { // If event listeners work el.addEventListener('click', function(e) { // Add listener on click itemDone(e); // It calls itemDone() }, false); // Use bubbling phase for flow } else { // Otherwise el.attachEvent('onclick', function(e) { // Use old IE model: onclick itemDone(e); // Call itemDone() }); }
HTML代码:
<!DOCTYPE html>
<html>
<head>
<title>JavaScript & jQuery - Chapter 6: Events - Event Delegation</title>
<link rel="stylesheet" href="css/c06.css" />
</head>
<body>
<div id="page">
<h1>List King</h1>
<h2>Buy groceries</h2>
<ul id="shoppingList">
<li class="complete"><a href="itemDone.php?id=1"><em>fresh</em> figs</a></li>
<li class="complete"><a href="itemDone.php?id=2">pine nuts</a></li>
<li class="complete"><a href="itemDone.php?id=3">honey</a></li>
<li class="complete"><a href="itemDone.php?id=4">balsamic vinegar</a></li>
</ul>
</div>
<script src="js/event-delegation.js"></script>
</body>
</html>
CSS代码:(参考:源码-JavaScript&jQuery交互式前端开发-第6章-事件-Focus和blur事件,http://blog.csdn.net/hpdlzu80100/article/details/52651002)
相关文章推荐
- 源码-JavaScript&jQuery交互式前端开发-第6章-事件-鼠标事件-浮层的显示与关闭
- 源码-JavaScript&jQuery交互式前端开发-第6章-事件-鼠标事件-确定光标位置
- 源码-JavaScript&jQuery交互式前端开发-第6章-事件-HTML事件处理程序
- 源码-JavaScript&jQuery交互式前端开发-第6章-事件-表单事件
- 源码-JavaScript&jQuery交互式前端开发-第6章-事件-键盘事件-确定按键值
- 源码-JavaScript&jQuery交互式前端开发-第6章-事件-示例(Example)
- 源码-JavaScript&jQuery交互式前端开发-第6章-事件-Focus和blur事件
- 源码-JavaScript&jQuery交互式前端开发-第6章-事件-变动事件
- 源码-JavaScript&jQuery交互式前端开发-第6章-事件-HTML5事件
- 源码-JavaScript&jQuery交互式前端开发-第2章-JavaScript基础指令-使用变量来存储数字
- 源码-JavaScript&jQuery交互式前端开发-第2章-JavaScript基础指令-使用变量来存储字符串
- 源码-JavaScript&jQuery交互式前端开发-第3章-函数、方法与对象-使用字面量语法创建对象
- 源码-JavaScript&jQuery交互式前端开发-第2章-JavaScript基础指令-在字符串中使用引号
- 源码-JavaScript&jQuery交互式前端开发-第3章-函数、方法与对象-使用构造函数语法创建对象
- 源码-JavaScript&jQuery交互式前端开发-第2章-JavaScript基础指令-使用变量来存储布尔值
- 源码-JavaScript&jQuery交互式前端开发-第5章-文档对象模型-更新文本和标签
- 源码-JavaScript&jQuery交互式前端开发-第7章-JQuery-修改内容
- 源码-JavaScript&jQuery交互式前端开发-第4章-判断和循环
- 源码-JavaScript&jQuery交互式前端开发-第2章-JavaScript基础指令-章节示例
- 源码-JavaScript&jQuery交互式前端开发-第3章-函数、方法与对象-浏览器对象模型