簡體   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