iPhone模拟器首先了解“点击”jQuery事件,但不是第二个

时间:2012-12-25 03:12:22

标签: jquery ios safari touch

我发现这有点令人困惑,如果有其他人遇到这个并且可以启发我......

我使用jQuery设置了一个click事件监听器,它注册得很好,但第二个没有,但是,在第二个,touchend事件确实注册。

$(document).on("click", ".date-button", ...

和第二个类似的事件监听器在另一个元素上:

$(document).on("click touchend", ".time.true", ...

我必须使用touchend,因为click没有注册。 我很乐意同时使用click touchend,但如果我在第一个监听器中执行此操作,则行为会运行两次,(一次用于点击,一次用于touchend)!

更新

我发现问题在于我“或许”在document上委派了太多的事件。当我委派第二个click听众来阅读像$("#times-popup").on("click", ".time.true", ...这样的内容时,它再次发挥作用。

我仍然认为这是一个错误,无论是在jQuery还是iOS ...更可能是jQuery,还是我在做一些我不应该做的事情?

1 个答案:

答案 0 :(得分:1)

  

在iPhone上,事件委派对click事件不起作用。它适用于鼠标悬停和鼠标移除,适用于触摸事件,但不适用于点击。

     

但是......如果事件的目标是链接或输入字段,则事件委派会起作用。

http://www.quirksmode.org/blog/archives/2010/09/click_event_del.html

因此,一种方法是将.date-button元素更改为键入ainput。或者,在页面中添加一些CSS也可以修复您的错误:

.date-button {
    cursor: pointer;
}

请参阅:http://jimmybyrum.com/tests/eventdelegation.html