jQuery的live绑定事件在mobile safari(iphone / ipad / ipod)上失效的解决方案

jQuery的live绑定事件在mobile safari(iphone / ipad / ipod)上失效的解决方案

因 为给几个线上的页面做了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)在需要进行事件绑定的元素上(包括新建元素)添加οnclick=""

                        这个方案比较完美,可以完全保留live的事件委托的实现方式,只是比较麻烦的是需要多

                        写很多的οnclick=""。

【补充2012-08-20】

  在iOS设备上添加onclick后会导致系统的一些原生功能失效的问题,这里要酌情进行使用。

 

注:转自http://hi.baidu.com/alimyself/item/63ff1b43416165fedd0f6c35  作者:周 Ali 的 笔 记 本

转载于:https://www.cnblogs.com/myphper/p/3227225.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值