单击处理程序不会触发在Ajax Callback中呈现的元素 - 仅在Safari

时间:2017-10-20 09:04:25

标签: javascript jquery ios ajax safari

我无法在Safari(以及ios设备)上使用可在Firefox,Chrome,Edge和IE上正常工作的东西。

在我的页面上有一个输入字段,它将输入发送回服务器,并在服务器创建此元素后将一个元素添加到dom(将其视为具有搜索结果的服务器端呈现的复杂组合框)。

这个添加到页面的dom元素包含像这样的可点击链接

<a href="" class="stampOption">Search result 1</a>

由于没有人知道页面上会出现多少这些链接,我在文档上注册了一个点击处理程序,如下所示:

$(document).on(“click touchstart tap”,function(evt){

if ($(evt.target).hasClass("stampOption")) {

                some code...    
});

虽然到目前为止我测试的所有浏览器都没问题,但在Safari中永远不会调用点击处理程序。

我尝试了几种替代方案,例如委托事件(在Safari / iOS上似乎也有问题),如下所示:

$(document).on("click touchstart tap", ".stampOption", function(evt) {

。我应用了光标:指针CSS技巧以及在SO和其他地方建议的onclick =“”技巧。

我还确保没有其他点击事件处理程序可以阻止冒泡等。

所以我还能尝试什么?

1 个答案:

答案 0 :(得分:0)

没关系。问题是在同一页面上使用relatedTarget的模糊处理程序,在Safari上,它总是为空,因此一些if() - 语句在Safari上没有得出正确的结论,而在其他浏览器中一切都很好。 让我们说一些处理程序在Safari上吃掉了click事件。对浏览器不兼容性无知的典型案例......