js事件机制
2015-12-13 18:37
525 查看
页面中添加事件的几种方式
方式 | 代码 | 描述 |
直接将JS代码写在HTML上 | <div onclick="alert('欢迎访问Nowamagic.net');">Nowamagic</div>HTML Element元素自身就拥有了很多onXXX属性,只需将JS代码赋值给其就可以了。赋值给onXXX的字符串将作为响应函数的函数体 | 冒泡事件 |
定义一个函数,赋值给html元素的onXXX属性 | <div onclick="clk()">Div2 Element</div>先定义函数clk,然后赋值给onclick属性 | 冒泡事件 |
使用element.onXXX方式 | <div id="d3">Div3 Element</div><script type="text/javascript"> var d3 = document.getElementById('d3'); d3.onclick = function(){ }</script> | 冒泡事件 |
addEventListener或attachEvent | <div id="d4">Div4 Element</div> <script type="text/javascript"> var d4 = document.getElementById('d4'); function clk(){alert(4)} if(d4.addEventListener){ d4.addEventListener('click',clk,false); } if(d4.attachEvent){ d4.attachEvent('onclick',clk); } </script> 注意attachEvent的第一个参数需要加上个"on",addEventListener第三个参数为false表示事件冒泡,attachEvent没有第三个参数,默认就是冒泡,没有捕获。 |
事件的发生顺序
事件捕获当你使用事件捕获时,父级元素先触发,子级元素后触发,即div先触发,p后触发。事件冒泡当你使用事件冒泡时,子级元素先触发,父级元素后触发,即p先触发,div后触发。这两种事件顺序是截然相反的。Explorer浏览器只支持冒泡事件,Mozilla,Opera7和Konqueror两者都支持。而更古老的opera和iCab两者都不支持W3c模型
核心: 任何发生在w3c事件模型中的事件,首是进入捕获阶段,直到达到目标元素,再进入冒泡阶段作为开发者,可以选择是在捕获阶段还是在冒泡阶段绑定绑定事件处理函数,这是通过addEventListener()方法实现的,如果这个函数的最后一个参数是true,则在捕获阶段绑定函数,反之false,在冒泡阶段绑定函数。假设你要做执行顺序
var btn1Obj = document.getElementById("btn1"); //object.attachEvent(event,function); btn1Obj.attachEvent("onclick",method1); btn1Obj.attachEvent("onclick",method2); btn1Obj.attachEvent("onclick",method3); 执行顺序为method3->method2->method1如果是Mozilla系列,并不支持该方法,需要用到addEventListenervarbtn1Obj = document.getElementById("btn1"); //element.addEventListener(type,listener,useCapture); btn1Obj.addEventListener("click",method1,false); btn1Obj.addEventListener("click",method2,false); btn1Obj.addEventListener("click",method3,false); 执行顺序为method1->method2->method3具体事例;http://www.jb51.net/article/67051.htm参考:http://www.nowamagic.net/librarys/veda/detail/1304http://blog.jobbole.com/39446/http://www.jb51.net/article/42492.htmhttp://www.jb51.net/article/32832.htm相关文章推荐
- JSP精简见解
- 10015---JavaScript--表单验证
- Jsp中如何使用Ckeditor富文本编译器以及实现上传文件的功能
- django中使用chart.js的例子
- js处理小数 , toFixed()的潜在问题
- 关于NestableRuntimeException异常的解决
- Unicode与JavaScript详解
- 沙朗javascript总结一下(一)---基础知识
- 自定义JSON配置器
- project.json
- js----自定义对象的四种创建方式
- web标准---html、css、js分离
- js中获取事件对象的方法小结
- JS一起学04:函数返回值、定时器、随机数、自动播放的幻灯片
- JS一起学03:js组成、下拉+text、字符串拼接、分号问题、数据类型、变量类型、作用域和闭包、命名、运算符、流程判断、调试、iNow、onchang
- JS一起学02:函数传参、操作属性第二种方式、提取行间事件、循环、this、焦点问题、联动选择、选项卡焦点图
- js的window.onscroll事件兼容各大浏览器
- js改变classname 或添加classname
- JS-数组
- Jsoup处理Url与解析Html