给动态添加的标签使用jQuery绑定click事件不响应以及iOS设备上click事件委托失效问题
不响应原因:当它使用jQuery绑定click事件时,对应的DOM对象还没有生成,所以会不响应
解决方案1:可以使用代理事件来解决,代码1如下,但是使用下面这个代码1会引起另外一个问题,就是安卓和PC上都可以正常响应,但是在iOS设备上是没有响应,解决方案见代码2,至于为什么在iOS设备上不响应,参考最下面的链接地址,我在这里不在多说,解决方法见代码2片段,需要注意的一点就是绑定的目标元素,我采用的是下面参考链接中的第2种解决方案,只要是非document,body的父级元素都可以。(ps:我绑定的cinemaList是他的爷爷,至于你想绑定它哪个父级元素就看你心情了)
代码1:
$(document).on('click','.allList .detail',function () { var cinemaID = $(this).attr("cinemaID"); localStorage.setItem("userChooseCinemaId", cinemaID); window.location.href = "index.html"; });
代码2:
$('.cinemaList').delegate('.allList .detail','click',function (event) { var cinemaID = $(this).attr("cinemaID"); localStorage.setItem("userChooseCinemaId", cinemaID); window.location.href = "index.html"; });
解决方案2:在动态生成标签事直接绑定onclick事件,如我红框所示,简单粗暴
参考链接:http://www.cnblogs.com/-walker/p/6726833.html 关于IOS下click事件委托失效的解决方案
本文探讨了使用jQuery为动态添加的元素绑定click事件时遇到的问题,特别是在iOS设备上的响应问题。介绍了两种解决方案:一是使用jQuery的delegate方法,二是直接在生成元素时绑定onclick事件。
886

被折叠的 条评论
为什么被折叠?



