追风赶月莫停留,平芜尽处是春山。这篇文章主要讲述关于iphone点击事件无效,安卓没问题相关的知识,希望能为你提供帮助。
因为给几个线上的页面做了js动态代码,图省事就用了jQuery框架,也是怪当时自己没有详细的测试过,结果页面给别人了之后才发现jQuery的这个bug,不过也好,至少有所收获,如果不出现这个问题,估计我也想不到要去看jQuery官方的bug列表了。这是后话了!
jQuery的live绑定为什么会在mobile
safari上失效呢?其实可以追溯到jQuery里live的实现方式。live的实现方式实际上是通过事件委托机制来实现的,也就是说是通过诸如冒泡的方式在DOM树的相应根节点上绑定事件,这样此结点下的所有节点都会默认绑定了此事件。mobile
safari上之所以live会失效就是因为mobile
safari可能阻止了事件的冒泡(这里也只是推测,实质的原因还在进一步查找),没有给根节点绑定相应的事件,从而导致了问题的产生。
jQuery在mobile
safari上使用live进行事件绑定会失效的解决方案有如下两个:
(1)将live绑定更改成bind绑定
但是这个前提是不需要给动态新生成的元素(如ajax请求后新建的元素)进行事件绑定,
否则建议采用第二种解决方案。
(2)在需要进行事件绑定的元素上(包括新建元素)添加onclick=""
这个方案比较完美,可以完全保留live的事件委托的实现方式,只是比较麻烦的是需要多
写很多的onclick=""。
【关于iphone点击事件无效,安卓没问题】
这样的话也有弊端,最后发现一个问题可以解决,在live绑定的时候,给元素添加样式cursor:pointer;
就生效了
推荐阅读
- Android 网络连接状态的监控
- AndroidStudio使用偷懒插件Butterknife和GsonFormat
- (Android数据传递)Service和Activity之间-- 借助BroadcastReceiver--的数据传递
- Android开发(《Gradle Recipes for Android》阅读笔记(翻译)2.4——更新新版本的Gradle)
- (文件操作)Android相关的File文件操作
- Android面试套路题越来越深入
- Android开发之Retrofit+RxJava的使用
- 启动avd Android模拟器缓慢 HAXM自动安装失败
- Android之Activity系列总结--Activity的四种启动模式