JavaScript捕获与冒泡与委托

事件捕获指的是从document到触发事件的那个节点,即自上而下的去触发事件。

相反的,事件冒泡是自下而上的去触发事件。

并不是所有的事件都能冒泡,以下事件不冒泡:blur、focus、load、unload

阻止冒泡的方法

if(event && event.stopPropagation){ // w3c标准 
  event.stopPropagation(); 
}else{ // IE系列 IE 678 
  event.cancelBubble = true; 
}

事件委托就是利用冒泡的原理,把事件加到父级上,通过判断事件来源的子集,执行相应的操作,事件委托首先可以极大减少事件绑定次数,提高性能;其次可以让新加入的子元素也可以拥有相同的操作。 

$("#info_table td").bind(

  {
    click:function(){$("p").slideToggle();},
    mouseover:function(){$("body").css("background-color","red");},
    mouseout:function(){$("body").css("background-color","#FFFFFF");}
  }
);

$("#info_table td").live("click",function(){/*显示更多信息*/}); 
$("#info_table").delegate("td","click",function(){/*显示更多信息*/}); 
$(elems).on(events, selector, data, fn);
$(elems).off(events, selector, fn);
如果指定selector,则为事件委托;否则,就是常规绑定。
现在只要用on方法就可以了,推荐用on方法进行委托或常规绑定事件
If there are similarities, forgive me.
posted @ 2019-06-26 20:41  花月容一箭穿心  阅读(149)  评论(0编辑  收藏  举报