JS 事件对象和事件冒泡
2015-08-20 16:45
369 查看
1、事件对象
js的事件对象中保存了当前被触发事件的一些相关的属性信息,如事件源、事件发生时的鼠标位置、事件按键等。事件对象的获取方法:IE中可以window.event直接获取,而Firefox中则不可以,可通过如下方法获取:1)var event = window.event || arguments.callee.caller.arguments[0];2)通过参数传。function(e) { var event = window.event || e; }2、事件源事件源即事件发生所在的元素(是最里层元素),在IE中用event.srcElement获取,在Firefox中用event.target获取。兼容性代码如下:var event = window.event || arguments.callee.caller.arguments[0];var targetObj = event.srcElement || event.target; 3、事件冒泡
在默认情况下,发生在一个子元素上的单击事件(或者其他事件),如果在其父级元素绑定了一个同样的事件,此时点击子元素,click事件会首先被子元素捕获,执行绑定的事件程序,之后会被父级元素捕获,再次激发一段脚本的执行,这就是所谓的“事件冒泡”。但有的时候,在一个子元素上处理完单击事件后,不想触发其父元素的相同事件,则需要阻止冒泡的发生,阻止冒泡的方法如下:在IE里使用 window.event.cancelBubble = true;在Firefox里使用 event.stopPropagation();兼容性代码如下所示:var event = window.event || arguments.callee.caller.arguments[0];if (event.stopPropagation) { event.stopPropagation(); } else { event.cancelBubble = true; }4、jQuery对DOM的事件触发具有冒泡特性,jQuery.Event对象是符合W3C标准的一个事件对象,同时jQuery.Event免去了检查兼容IE的步骤。jQuery.Event提供了一个非常简单的方法来阻止事件冒泡:event.stopPropagation();示例代码如下:$("div").click(function(event) { event.stopPropagation(); });但是上面方法对使用live 绑定的事件没有作用,需要一个更简单的方法阻止事件冒泡:return false;示例代码如下:$("div").live(function() {//do something..return false;});注意:event.stopPropagation()和return false两种阻止事件冒泡的方式有一些区别:return false 不仅阻止了事件往上冒泡,而且阻止了事件本身;event.stopPropagation() 则只阻止事件往上冒泡,不阻止事件本身,比如如下代码将导致单击文件浏览按钮,无法弹出文件浏览对话框。<div id="panel"><input type="file" id="fileBtn"/></div><script type="text/javascript">$("#panel").click(function() {return false; //return false在阻止冒泡的同时也会取消当前事件本身,这将阻止文件浏览对话框弹出});</script>5、阻止事件的默认行为(比如使文本输入框的键盘输入不起作用)上面说了阻止事件冒泡,但是事件的默认行为还是会发生,只不过事件不会再往上一级节点传递。阻止事件的默认行为的方式如下:1)原生JS的方式://如果提供了事件对象,则这是一个非IE浏览器if (event && event.preventDefault) {//阻止默认浏览器动作(W3C)event.preventDefault();} else {//IE中阻止函数器默认动作的方式window.event.returnValue = false;}return false;2)jQuery的方式在上面的第4点中已经说过了,直接返回false就行
相关文章推荐
- js中(function(){…})()立即执行函数写法理解
- JS实现的通用表单验证插件完整实例
- formvalidator 表单验证插件
- javascript 事件 第23节
- javascript 闭包暴露句柄和命名冲突的解决方案
- MVC Newtonsoft.Json解析JSON字符串
- 极光 通过js函数
- JavaScript(二)-16-(JS自定义对象2)
- js中,从一段链接中获取ip地址的方法。
- 初识JSONP--解决ajax跨域问题
- JavaScript(二)-15-(JS自定义对象)
- JavaScript(二)-14-(JS中的特有语句-forin)
- JS中的数据类型和变量内存
- JavaScript(二)-13-(全局方法&Number对象)
- JavaScript(二)-11-(JS中特有语句-with)
- JavaScript(二)-12-(常见对象-Math-基本功能)
- JavaScript(二)-10-(常见对象-Date-基本方法)
- js很好的教材
- Javascript(二)-09-(常见对象-Array-练习-自定义功能)
- Javascript(二)-08-(常见对象-Array-练习-堆栈和队列结构)