1.阻止默认事件(例如A标签设置click,防止A标签默认跳转)
event.preventDefault()
2.阻止冒泡(例如父级元素绑定事件,子元素页绑定事件,如果不取消冒泡,则点击子元素也会触发父元素事件)
event.stopPropagation()
3.阻止后续事件触发,写在A中,则后续注册的事件B不会被触发(例如按钮绑定两个事件,通过优先级的方式注册了A和B,在运行A的时候不运行B)
event.stopImmediatePropagation()
备注:如果某个元素有多个相同类型事件的事件监听函数,则当该类型的事件触发时,多个事件监听函数将按照顺序依次执行.如果某个监听函数执行了 event.stopImmediatePropagation()方法,则除了该事件的冒泡行为被阻止之外(event.stopPropagation方法的作用),该元素绑定的后序相同类型事件的监听函数的执行也将被阻止.
4.绑定事件的点,例如ul绑定事件,然后点击li,则currentTarget返回就是ul
event.currentTarget
5.发生事件的点,例如ul绑定事件,然后点击li,则target返回就是li。(早期IE使用srcElement )
event.target
事件委托/代理的应用:事件委托(将子源的事件都代理绑定到父级上,如一个list的每个item都要绑定click事件,然后如果都绑定在item上的话,不好,所以绑定在item的parent上,然后通过target获取当前事件触发点)
// Make a list
var ul = document.createElement('ul');
document.body.appendChild(ul);
var li1 = document.createElement('li');
var li2 = document.createElement('li');
ul.appendChild(li1);
ul.appendChild(li2);
function hide(e){
// e.target refers to the clicked <li> element
// This is different than e.currentTarget which would refer to the parent <ul> in this context
e.target.style.visibility = 'hidden';
// e.target => li
// e.currentTarget => ul
}
// Attach the listener to the list
// It will fire when each <li> is clicked
ul.addEventListener('click', hide, false);