理解jquery on 委托事件的机制
前两天做了一个点击任意位置,都能关闭菜单的功能,因为菜单里面的每一个a,的点击事件都是用on绑定的。所以在阻止冒泡的时候不管用,今天特意来理解一下on的机制 on 是委托事件,利用的就是冒泡原理 $(selector).on(event,[selector],handler); selector 如果为空,表示的就是目标元素就是所选元素,如果有值代表的是符合所选元素的所有后代元素 实际上,事件委托的事件处理函数是 当被委托的元素上的事件触发时判断e.target后执行 ,而不是目标元素上的事件被触发后就立即执行,在没有阻止冒泡的情况下,事件还是一层层传播的,只是处理函数在事件到达那一层被触发的问题。根据事件代理的规则,点击li元素后,click事件是从li至ul至ul父元素一层层冒泡上去的,沿途触发各个元素上的事件处理函数。如果我们将事件委托在ul上,调用了stopPropagation,就 阻止了事件从ul继续向上冒泡,而不是阻止事件从li向上冒泡 。这样从ul开始,ul及其祖先元素上的事件冒泡被阻止。 重要说明 : 如果传递了 selector 参数,那么 on() 函数并 不是 为当前jQuery对象匹配的元素绑定事件处理函数,而是 为它们的 后代元素中符合选择器 selector 参数的元素绑定事件处理函数 。 on() 函数并不是直接为这些后代元素挨个绑定事件