【发布时间】:2018-07-22 18:27:38
【问题描述】:
我目前正在调试具有以下元素的网络应用程序:
<a class="btn btn__add-to-cart" data-target="/someURL" data-cart="modal" title="add to basket">
<svg class="icon icon__cart icon--lg" role="img" aria-hidden="true">
<use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="/_ui/17.2.0.173/desktop/common/images/icons/icon-sprite.svg#cart"></use>
</svg>
</a>
有一个函数绑定到外部元素,如下所示:
$(document).on('click', '[data-cart="modal"]', function(evt){
alert('test-on-document');
})
不在 iOS 9、10、11 Safari 和 Chrome 上运行。
如果我像这样直接将相同的函数绑定到元素:
$('[data-cart="modal"]').on('click', function(evt){
alert('test-direct');
})
它起作用了——更神奇的是,绑定到文档的第一个函数也被执行了。
当然,这在独立环境中确实有效,但在应用程序上下文中却不行。我一直在寻找 CSS 中的指针事件或绑定到它的其他一些函数,但尤其是最后一部分(文档函数在添加直接绑定函数后工作)毫无意义。
有什么提示吗?
解决方案
经过长时间的搜索,我想出了为什么在 iOS 上没有触发点击事件:这仅仅是因为 a-tag 上的“href”属性丢失了。所以要么添加 "href='#"' 或者 - 仔细观察 - 将 "cursor:pointer" 添加到 a 的 CSS 中! :-o
【问题讨论】:
-
When you fix the typo in the first example it works fine. (
function(evt{) -
不,不是 :) 只是复制/粘贴的错字,抱歉
-
你使用的是什么 jQuery 版本?
-
3.2.1 - 但我认为这不是重点,文档上的其他选择器也可以工作,而且它也只是 iOS 上的一个问题......
标签: javascript jquery css html pointer-events