最近项目中有个卡片点击的需求,卡片有点击事件,卡片上的子元素也绑定点击事件,为了避免点击子元素冒泡,在子元素点击事件中 添加event.stopPropagation,然而并没达到预期效果,看了下zepto源码,发现了一些猫腻,由于子元素通过父元素代理绑定事件,而zepto触发事件的机制 是将绑定在元素的事件维护在一个队列中,当目标元素是该元素时,就会从队列中依次处理事件
image.png上图可以看出,元素的绑定事件均维护在zepto代码中,看看zepto做了什么事情
image.png从源码中,可以看到zepto 并没有对selector做匹配,导致代理元素的绑定事件执行顺序异常
解决方法:
事件绑定到具体元素上,或者使用jQuery的绑定事件
网友评论