javascript实例教程:事件委托讲解
来源:互联网 发布:2015年人口老龄化数据 编辑:程序博客网 时间:2024/06/05 08:53
在学校的时候简单学过HTML+CSS,现在重新拾起web前端开发,目前正学习javascript语言,就记录一下自己学习web前端(http://www.maiziedu.com/course/web/)的过程,今天主要记录的笔记是javascript中事件委托的理解,如果有不对的地方,请一定帮我指正,谢谢^ ^
假设有几个按钮,当点击其中一个按钮的时候,系统默认选择第一个,当被用户点击时的被点击的按钮会变色,而其他按钮将返回原本的颜色。如果不用事件委托的话要怎么写呢?
我的代码如下:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>Document</title>
<script src="./jquery.js"></script>
<script type="text/javascript">
$(document).ready(function(e) {
$(".toolBar button").click(function(e) {
$(this).addClass("turnRed").siblings("button").removeClass("turnRed")
});
$(".toolBar button:first").click();
})
</script>
<style type="text/css">
.turnRed {
background-color: red;
}
//鼠标移动到的位置按钮变色
button:hover {
background-color: yellow;
}
</style></head>
<body>
<div class="toolBar">
<button>click me</button>
<button>click me</button>
<button>click me</button>
<button>click me</button>
<button>click me</button>
<button>click me</button>
</div></body>
</html>
jquery代码中的$(".tool_bar button").click(function(e){})部分注册了一个click事件,在这段代码中计算机需要找到tool_bar类下的button,然后一个一个核对哪个button是click的对象,找到对象之后再调用函数来为它添加添加指定的样式类,同时为不被点击的按钮移除样式类。
这种方式在按钮很少的时候不会有什么影响,可是当按钮过多时毫无疑问将会造成大量的资源浪费,那么程序怎样优化呢?
这里就要用到题目中说到的事件委托机制,事件就是发生的事情,常用的有点击事件onclick,鼠标事件onmouseover与onmouseout等等。而委托则更好理解,就是将一件原本应该由自己做的事情交代给另一个人去做(这里的另一个人指的是父元素),从而达成更好的效率。
先看代码:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>Document</title>
<script src="./jquery.js"></script>
<script type="text/javascript">
$(document).ready(function(e) {
$(".toolBar").click(function(e) {
if (e.target.nodeName === 'BUTTON') {
var $clickbutton = $(e.target);
$clickbutton.addClass('turnRed').siblings('button').removeClass('turnRed');
}
}).find('button:first').click();
})
</script>
<style type="text/css">
.turnRed {
background-color: red;
}
button:hover {
background-color: yellow;
}
</style></head>
<body>
<div class="toolBar">
<button>click me</button>
<button>click me</button>
<button>click me</button>
<button>click me</button>
<button>click me</button>
<button>click me</button>
</div></body>
</html>
唯一改变的是jquery中的代码,$定位到了button的父元素.tool_bar而不是直接定位到button上,当父元素被点击时,通过事件对象节点类型e.target.nodeName确定为BUTTON(注意要用大写形式)之后,再为对象添加样式类而为其他同胞元素移除样式类。
改动的只是一行代码,但是效率却得到了不小的提高。
- javascript实例教程:事件委托讲解
- JavaScript中的事件委托
- javascript--事件委托
- JavaScript 事件委托
- JavaScript中的事件委托
- javascript --- 事件委托
- JavaScript 事件委托
- javascript事件委托(冒泡)
- 【javascript】js事件委托
- JavaScript中的事件委托
- JavaScript中的事件委托
- JavaScript事件委托
- JavaScript 事件委托
- 简述javascript事件委托
- JavaScript事件委托
- Javascript事件委托
- Javascript—事件委托
- JavaScript-事件委托
- 简单实现左右两个listview联动,点击左边切换右边
- 内存对齐 大端字节,序小端字节序验证
- IP地址转Byte
- SPOJ GSS1 Can you answer these queries I
- Android RGB颜色查询对照表
- javascript实例教程:事件委托讲解
- 卡尔曼滤波器(to be continued)
- Scala学习记录-Scala入门资源
- Ubuntu14.04实现简单日志文件服务器
- 解决Eclipse建立Maven项目后无法建立src/main/java资源文件夹的办法
- 数据库模型设计——主键的设计
- Java小数点位数保留问题
- 求单独出现的数,strncpy的优化
- JNI 常用函数