问题:要对网站上动态添加的元素绑定点击事件,因为是动态生成的,所以使用的on进行事件委托。在PC端测试都没有问题,唯独iOS中的Safari始终无法响应。
on(events,[selector],[data],fn)
// 事件委托
$('.father').on('click', '.child', function(){
// do something
})
// 一般绑定
$('.father .child').on('click', function(){
// do something
})
但是在不使用事件委托进行测试时,则点击事件可以正常响应。
最后在查找以往案例后发现,对可点击控件<a></a>
<button></button>
进行事件委托则可以正常响应。而在我的案例中使用了<div></div>
做为按钮去响应点击事件。
问题解决:
- 不使用事件委托来绑定点击事件
- 在使用事件委托绑定点击事件时,控件需要使可以点击的,如
a
button
。
总结:
这个问题可以认为是不规范引起的,HTML5 强调语义化标签,而长久以来已经习惯了使用div
去创建按钮等控件,虽然要是控制比较方便,但是在如今的环境下,这种做法无疑是不恰当的,是需要订正的
怎么让a
标签不响应原来的事件,又是另外的故事了 😜