我发现这有点令人困惑,如果有其他人遇到这个并且可以启发我......
我使用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,还是我在做一些我不应该做的事情?
答案 0 :(得分:1)
在iPhone上,事件委派对click事件不起作用。它适用于鼠标悬停和鼠标移除,适用于触摸事件,但不适用于点击。
但是......如果事件的目标是链接或输入字段,则事件委派会起作用。
http://www.quirksmode.org/blog/archives/2010/09/click_event_del.html
因此,一种方法是将.date-button
元素更改为键入a
或input
。或者,在页面中添加一些CSS也可以修复您的错误:
.date-button {
cursor: pointer;
}