您现在的位置:首页 >> 前端 >> 内容

preventDefault()

时间:2017/2/13 9:22:11 点击:

  核心提示:preventDefault方法取消浏览器对当前事件的默认行为,比如点击链接后,浏览器跳转到指定页面,或者按一下空格键,页面向下滚动一段距离。该方法生效的前提是,事件的cancelable属性为tru...

preventDefault方法取消浏览器对当前事件的默认行为,比如点击链接后,浏览器跳转到指定页面,或者按一下空格键,页面向下滚动一段距离。该方法生效的前提是,事件的cancelable属性为true,如果为false,则调用该方法没有任何效果。

该方法不会阻止事件的进一步传播(stopPropagation方法可用于这个目的)。只要在事件的传播过程中(捕获阶段、目标阶段、冒泡阶段皆可),使用了preventDefault方法,该事件的默认方法就不会执行。

该方法是否能作用取决于,节点+方法,例如

submit/a+click
input/button+keypreaa
p+scroll

除键盘鼠标事件外,还有其他如进度事件,拖拉时间,触摸事件,文档事件,以后遇到的时候个别分析

下面附上遇到的preventDefault用法问题

背景:在backbone开发的基础上添加一个Tab NEW(非backbone)

表现: NEW 的相邻一次tab A不能A->NEW后NEW->A

作死的新加入代码

(‘#promote-tab’).click(function(e){
e.preventDefault();(this).tab(‘show’);
});

问题在于preventDefault()阻止了tab的index的调整,所以tab A坚持认为A一直都是A,从未改变。

可能看官会问, 为什么用e.preventDefault()?懒惰的粘过来JS组件代码作死了,根源还是对他的了解不够,反省后注意。

Tags:PR RE EV VE 
作者:网络 来源:wangning_e