开发中复杂嵌套时,时常会导致父级事件操作累积在子级身上,相当于子级事件重复执行,即事件累积。类似于定时器的多次叠加
e.g.
HTML:
1 <div> 2 <span>123</span> 3 </div>
jQuery:
1 <script> 2 $('div').click(function() { 3 $('span').click(function() { 4 console.log(123) 5 }) 6 }) 7 </script>
结果:点击div 5次,此时当点击一次span时,监测窗口console.log(123)就会打印 5 次
解决办法:.off()
用off()将己身上的 此前事件操作全部清除,这样就可以避免父级事件操作对自身事件的累积
1 <script> 2 $('div').click(function() { 3 $('span').off().click(function() { 4 console.log(123) 5 }) 6 }) 7 </script>
结果:点击div 5次,此时当点击一次span时,监测窗口console.log(123)只会打印 1 次