3

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

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

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

以及另一个元素上的第二个类似事件侦听器:

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

我必须使用touchend,因为click没有注册。我很乐意同时使用这两种方法,click touchend但如果我在第一个侦听器中这样做,那么行为会运行两次(一次用于单击,一次用于触摸端)!

更新

我发现问题在于我“可能”在document. 当我委托第二个click听众阅读类似的东西时,$("#times-popup").on("click", ".time.true", ...它又起作用了。

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

4

1 回答 1

1

在 iPhone 上,事件委托不适用于 click 事件。它适用于 mouseover 和 mouseout,适用于触摸事件,但不适用于单击。

但是...如果事件的目标是链接或输入字段,则事件委托确实有效。

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

因此,一种方法是将.date-button元素更改为 typeainput. 或者,在您的页面中添加一点 CSS 也可能会修复您的错误:

.date-button {
    cursor: pointer;
}

见:http: //jimmybyrum.com/tests/eventdelegation.html

于 2013-01-08T17:59:30.087 回答