e.stopPropagation();
把click事件委托给body可以提高效率,并不是要body来触发click事件(当然body也可以通过冒泡行为当 event.currentTarget.nodeName ==="body" 时触发,而实际上我们需要阻止冒泡行为来阻止body触发click),而是要匹配到body里面的子元素event.target来触发click事件,delegate(body子元素,事件类型,fn)方法默认有冒泡行为,因此需要阻止冒泡。
这个绝对有问题,jquery我不知道,在js里采用事件委托,然后采用e.stopPropagation() 阻止冒泡的话,阻止的是委托对象(在这个案例里是body)的冒泡,而不可能阻止到e.target那个对象的冒泡,因为body事件的触发就是e.target冒泡才触发的,已经发生的事怎么还可以阻止呢。我用原生js的事件委托完全没有办法做到,在此表示质疑课程中e.stopPropagation() 使用的正确性。
e.stopPropagation() 是根据事件委托找到目标对象 ,阻止目标对象的事件冒泡