在开发公众号的时候遇到了很多坑,其中困扰的最久的就是在ios中onclick事件点击失效的问题,在这里做个笔记,防止日后在犯!!!
点击事件失效的环境:ios
问题描述:
给一个标签绑定(如div,span等等)onclick事件,事件失效。
问题原因:
当使用委托给一个元素添加click
事件时,如果的因为事件委托到document
或body
上,并且委托的元素是默认不可点击的(如div
,span
等),此时click
事件会失效。
解决方案:
- 将
click
事件直接绑定到目标元素(即.target
)上 - 将目标元素换成
<a>
或者button
等可点击的元素(因为这两个元素默认添加了cursor: pointer;样式
) - 将
click
事件委托到非document
或body
的父级元素上 - 给目标元素加一条样式规则
cursor: pointer;
然而我还遇到一个更坑的<a>标签跳转问题,点击该链接怎么都跳转不到对应的页面。
<a href="/wx/assess/assessDetailInit.htm"/>
后面在百度上看了很多,发现了问题所在!那就是 ↓↓↓
用事件委托的方法:
//mui A标签跳转委托事件(只要页面用了MUI如果有A,MUI会禁用)
mui('body').on('tap','a',function(){
document.location.href=this.href;
});
//mui A标签点击委托事件(只要页面用了MUI如果有A,MUI会禁用)
mui('body').on('tap', 'a', function (event) {
this.click();
});
添加了委托事件后果然可以直接跳转了→ →