前几天,要在移动端实现一系列的功能,用 HTML + JS。
按照以往的思路,事件绑定就直接 $(document).on "click", "selector", ()->
上了。
结果到了移动端打开页面,发现绑定的事件全都没有绑定上,按钮点击无效,滑动不反应。百思不得其解。
后来想了想,难道是因为绑定的时候页面还没有 ready?于是又把事件绑定全都写在了 $(document).ready ()->
中。
刷新移动端浏览器,问题并没有被解决。
然后我就想到,如果直接在目标元素上绑定事件是否可以成功呢?于是把所有的 $(document).on "click", "selector", ()->
换成了 $("selector").on "click", ()->
,重新打开移动端浏览器,刷新页面,结果真的成了!
难道是冒泡拦截的这种事件处理机制不起作用?于是把之前代码里的 $(document)
全部替换成目标元素的父元素,依旧使用 $("parent").on "click", "selector", ()->
这样的办法,结果居然也是可以的。
那么看来,就是在移动端上,$(document)
上绑定事件的确是有问题的,也许这只是 jQuery 的一个 bug 也说不定。限于时间,就没有继续深究了。