如何在jquerymobile中侦听两个事件并只启动一个函数

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

本文关键字:事件 启动 函数 一个 两个 jquerymobile      更新时间:2023-09-26

我有这个:

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

如果我这样听并点击列表项,两个事件正在启动=我收到两个"你好"。我需要每次"点击"都启动一个功能,但只能启动一次!

有办法做到这一点吗。我不能使用"一",因为第一次点击后功能会静音,不是吗?

谢谢你的指点!

编辑
如果我省略了点击或点击,函数仍然会触发两次。有什么办法可以防止这种情况发生吗?

jQM文档:
  • http://jquerymobile.com/demos/1.0.1/docs/api/events.html

虚拟鼠标事件
我们提供了一组"虚拟"鼠标事件,试图抽象鼠标和触摸事件。这允许开发人员为基本鼠标事件注册监听器,例如mousedown、mousemove、mouseup和click,插件将注意在后台将正确的侦听器注册到以最快的速度调用该设备的侦听器。在里面触摸环境中,插件保留了事件触发的顺序在传统的鼠标环境中可见,因此例如,vmouseup总是在vmousedown之前调度,并且在vclick之前调度vmousedon,等等。虚拟鼠标事件还规范了如何协调信息是从事件中提取的,因此基于触摸环境中,坐标可从页面X、页面Y、,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");
   }
   )};