如何在iPhone Web应用程序中使用jQuery进行点击事件

当我使用jQuery进行简单的点击事件时,它只能用于链接。 有没有办法使其工作跨度等:

$("span.clicked").live("click", function(e){alert("span clicked!")}); $("a.clicked").live("click", function(e){alert("link clicked!")}); 

SPAN在Safari中工作,而不是在移动Safari(在iPhone或iPad上),而A标签在两者中都起作用。

你需要听“touchstart”和“touchend”事件。 用jQuery添加侦听器…

 $('span').bind( "touchstart", function(e){alert('Span Clicked!')} ); 

您可能希望倾听触觉和触觉,以便您可以validation手指触摸时的目标元素与手指被移除时的目标元素是否相同。

我敢肯定有可能是一个更好的方法来做到这一点,但应该工作:)

编辑:有一个更好的办法! 请参阅https://stackoverflow.com/a/4910962/16940

我也为此而挣扎。 经过大量的讨论,试图找出问题,我遇到了一个简单的解决scheme。

如果将元素的cursor设置为pointer ,则它会再次使用jquery的live和click事件再次发挥作用。 这可以在CSS中全局设置。

实际上,您不需要使用touchstart或touchend事件,只要“span”标记(或“a”标记之外的任何其他标记)具有以下css属性:

 cursor:pointer 

点击将注册

您也可以通过添加一个空的onclick属性来哄骗浏览器生成点击事件。 对于任何一种方法在任何给定的iOS更新中停止工作的腰带和大括号的方法,你可以使用这样的东西:

 $("span.clicked").live("click", function(e){alert("span clicked!")}) .attr('onclick','') .css('cursor','pointer'); 

(假设你没有任何实际的onclick属性,你不介意消除)

我尝试了一切,没有任何技巧的工作。 事实certificate,我不能得到点击事件,因为我有我的img下的video元素。 video元素显然吃点击事件。

您可以添加一个空的onclick属性,如下所示:

 <span onclick=''>Touch or Click Me</span> jQuery('span').live('click', function() { alert('foo'); });