Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在iPhone web应用程序中使用jQuery for click event_Jquery_Iphone_Web Applications - Fatal编程技术网

如何在iPhone web应用程序中使用jQuery for click event

如何在iPhone web应用程序中使用jQuery for click event,jquery,iphone,web-applications,Jquery,Iphone,Web Applications,当我对一个简单的点击事件使用jQuery时,它只对链接有效。是否有办法使其适用于跨度等: $("span.clicked").live("click", function(e){alert("span clicked!")}); $("a.clicked").live("click", function(e){alert("link clicked!")}); SPAN在Safari中可用,但在Mobile Safari(在iPhone或iPad上)中不起作用,而A标记在两者中都起作用。您需

当我对一个简单的点击事件使用jQuery时,它只对链接有效。是否有办法使其适用于跨度等:

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

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

SPAN在Safari中可用,但在Mobile Safari(在iPhone或iPad上)中不起作用,而A标记在两者中都起作用。

您需要收听“touchstart”和“touchend”事件。使用jQuery添加侦听器

$('span').bind( "touchstart", function(e){alert('Span Clicked!')} );
您可能希望监听touchstart和touchend,以便验证手指被触摸时的目标元素是否与手指被移除时的目标元素相同

我相信可能有更好的方法,但这应该会奏效:)


编辑:有更好的方法!请看

我也在努力解决这个问题。在做了很多的尝试后,我找到了一个简单的解决方案


如果将元素的
光标
设置为
指针
,它将神奇地再次与Jquery的live和click事件一起工作。这可以在CSS中全局设置。

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

cursor:pointer

单击将注册

我尝试了所有方法,但没有一种方法奏效。事实证明,我无法获得点击事件,因为我的img下有一个视频元素。视频元素显然会吃掉点击事件。

您还可以通过添加空的onclick属性来引导浏览器生成点击事件。对于皮带和支架方法,如果任何一种方法在任何给定的iOS更新中停止工作,您可以使用如下方法:

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

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

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

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

我解决此文档误解的方法。单击

  • 在标记正文后添加到html中下一个标记

    
    ...
    

  • 那个标签的样式

    `#overlaySection {
      position: fixed;
      top: 0;
      left: 0;
      z-index: 1;
      width: 100%;
      height: 100%;
      background: rgba(255, 255, 255, 0);
      cursor: pointer;
      visibility: hidden;
      opacity: 0;
      content: "";
    }
    #overlaySection.active {
     opacity: 1;
     visibility: visible;
    }`
    
  • 一些JQuery人员

    //在文档上隐藏覆盖单击
    $('#overlySection')。单击(函数(){
    $(this.removeClass('active');
    });

  • 激活这个覆盖的主要原因是什么

    $('.dropdown > span').click(function() {
        ...
        $('#overlaySection').addClass('active');
        ...
    });
    

    希望此方法对其他人有用。快乐编码

    在定位iOS时,您必须考虑以下几点:在jQuery中执行事件委派,如
    $(document).on('click','target element',function(event){…})将不起作用。您必须将
    onclick=“
    添加到目标HTML元素中,或将
    光标:指针添加到其样式中

    摘自并改编自:

    事实证明,iPhone上的Safari不支持点击事件的事件委派,除非点击发生在链接或输入上。幸运的是,有解决办法


    这就是为什么
    标签起作用而
    不起作用的原因。

    谢谢。这是否意味着iPhone会忽略链接以外的点击事件(可能是因为其他可能的手势)?我认为,因为标签的工作方式是这样的,即它们在那里被点击-mobile webkit会自动处理它们上的点击事件。我不能肯定这一点。只是假设你缺少一个右括号。应该是$('span').bind(“touchstart”,函数(e){alert('span Clicked!'});谢谢,这适用于跨距、div和按钮,但不适用于图像标记。。请建议否(几乎可以肯定)-请参阅@Plynx的答案几个月来一直在寻找类似的修复方法,谢谢。我提出了iphone/pod/pad检测,并将这些设备的点击事件更改为其他事件。这要好得多。请注意,如果执行
    cursor:pointer悬停。@sudo你能详细说明一下吗?ipad上没有鼠标悬停——或者你是在说这在某种程度上打破了桌面版本,还是说“三星鼠标悬停在Galaxy S4上”?@Simon_Weaver
    div:hover{cursor:pointer;}
    div{cursor:pointer;}
    CSS
    cursor:pointer是一个很好的解决方案。FastClick是另一个解决方案。我也有同样的问题。下面的视频标签就是问题所在。你解决了吗?我想我最终隐藏了视频元素(显示:无)。这似乎是唯一的办法。我认为答案应该由Plynx更改,而不是Sam当前的答案。Plynx的答案肯定有投票权和支持率。