如何阻止冒泡与默认行为
答案:
- 阻止冒泡行为:非 IE 浏览器 stopPropagation(),IE 浏览器 window.event.cancelBubble = true
- 阻止默认行为:非 IE 浏览器 preventDefault(),IE 浏览器 window.event.returnValue = false
解析:
当需要阻止冒泡行为时,可以使用
function stopBubble(e) {
//如果提供了事件对象,则这是一个非IE浏览器
if (e && e.stopPropagation)
//因此它支持W3C的stopPropagation()方法
e.stopPropagation();
//否则,我们需要使用IE的方式来取消事件冒泡
else window.event.cancelBubble = true;
}
当需要阻止默认行为时,可以使用
//阻止浏览器的默认行为
function stopDefault(e) {
//阻止默认浏览器动作(W3C)
if (e && e.preventDefault) e.preventDefault();
//IE中阻止函数器默认动作的方式
else window.event.returnValue = false;
return false;
}
IE 与火狐的事件机制有什么区别?如何阻止冒泡
答案:
- 我们在网页中的某个操作(有的操作对应多个事件)。例如:当我们点击一个按钮就会产生一个事件。是可以被 JavaScript 侦测到的行为。
- 事件处理机制:IE 是事件冒泡、火狐是 事件捕获;
- ev.stopPropagation();
target 和 currentTarget 区别
答案:
- event.target(发生事件的元素,用于事件委托) 返回触发事件的元素(即具体点击的对象,可能是target的任意子元素)
- event.currentTarget(绑定事件监听的那个对象,例如ul.onclik,即该对象就是ul) 返回绑定事件的元素(即方法直接dom对象,即方法是绑在哪个dom上的就是哪个dom)
事件代理参考
window.onload = function(){
var oUl = document.getElementById("ul1");
oUl.onclick = function(ev){
var ev = ev || window.event;
var target = ev.target || ev.srcElement;
if(target.nodeName.toLowerCase() == 'li'){
alert(123);
alert(target.innerHTML);
}
}
}
如何阻止事件冒泡和默认事件?
答案:
阻止浏览器的默认行为 window.event?window.event.returnValue=false:e.preventDefault();
停止事件冒泡 window.event?window.event.cancelBubble=true:e.stopPropagation(); 原生 JavaScript 中,return false;只阻止默认行为,不阻止冒泡,jQuery 中的 return false;既阻止默认行为,又阻止冒泡