繁体   English   中英

如何在jquery mobile中监听两个事件并仅触发一个功能?

[英]how to listen for two events and only fire one function in jquery mobile?

我有这个:

$('li.clickable').live('click tap', function() {
   console.log("hello");
   )};

如果我这样听并单击列表项,则会触发两个事件=我得到两个“ Hellos”。 我需要在每次“点击”时触发一个函数,但是只需触发一次!

有什么办法可以做到这一点。 我不能使用“ one”,因为在第一次单击后该功能将静音,不是吗?

感谢您的指导!

编辑
如果我没有单击或单击,该功能仍会触发两次。 有什么办法可以防止这种情况?

jQM文件:

虚拟鼠标事件
我们提供了一组“虚拟”鼠标事件,试图将鼠标和触摸事件抽象化。 这允许开发人员为基本的鼠标事件注册侦听器,例如mousedown,mousemove,mouseup和click,并且插件将负责在后台注册正确的侦听器,以在尽可能快的时间为该设备调用侦听器。 在触摸环境中,该插件保留了在传统鼠标环境中看到的事件触发顺序,例如,总是在vmousedown之前调度vmouseup,在vclick之前调度vmousedown等。虚拟鼠标事件还规范了如何从中提取坐标信息。事件,因此在基于触摸的环境中,可以直接在事件对象上从pageX,pageY,screenX,screenY,clientX和clientY属性获得坐标。

vclick

用于处理触摸端或鼠标单击事件的规范化事件。 在触摸设备上,此事件在vmouseup 之后调度。

尝试使用:

$('li.clickable').live('vclick', function() {
   console.log("hello");
)};

您也可以测试触发哪个事件

$('li.clickable').live('click tap', function(e) {
    console.log("Which Event: "+e.which + " Event Type: "+e.type);
)};

由于如果仅听click您的操作也会触发两次,因此您可能会遇到一些用户或系统的怪异现象。

当电容式触摸屏开始普及并且人们(例如戴着手套)将开始两次触发时,我们会遇到各种各样的问题。 有助于防止用户双击的因素可能有助于防止系统被双击:

//global scope:
var triggertimeouts={}

$('li.clickable').live('click tap', function() {
   if (!triggertimeouts.myclicktap) {
      triggertimeouts.myclicktap=window.setTimeout('triggertimeouts.myclicktap=false;',250);
      console.log("hello");
   }
   )};

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM