2015-11-10 85 views
0

我有一個顯示與IE9的網頁42" touchdisplay的jQuery - 。馬上做一個點擊鼠標按下或觸摸

有很多關於它的錨有時用戶不只是短期內點擊一個鏈接,但停留它並沒有任何反應,直到他停止觸摸。

作爲第一個解決方案,我展示了用戶,他應該把他的觸摸板的手指的消息。

 var timeoutLongTouch; 
     $(".long-touch").on('mousedown.LongTouch', function() { 
      timeoutLongTouch = setTimeout(function() { 
       $("#warning").show(); 
      }, 1000); 
     }) 
     .on('mouseup.LongTouch', function() { 
      clearTimeout(timeoutLongTouch); 
      $("#warning").hide(); 
     }); 

這工作得很好,但現在我會傾向於將longtouch事件更改爲即時點擊。

我嘗試了幾種方法 - f.e.

$(".long-touch").on('mousedown.LongTouch', function() { 
     var item = $(this); 
     setTimeout(function() { 
      console.log(item); 
      $(item).click(); 
     }, 300); 
    }); 

但無論我嘗試點擊不會被解僱,直到用戶把他的手指。

當用戶觸摸一個鏈接時,是否有辦法將longtouch轉換爲immiediate點擊,而不取決於topuch的持續時間?

+0

聽起來像你想使用'touchstart'事件 – Turnip

回答

0

你可以嘗試使用以下嗎?

$('.long-touch').on('touchstart click', function(event){ 
    event.stopPropagation(); 
    event.preventDefault(); 

    //do your stuff 
}); 

對於觸摸,您需要使用touchstart,並且我們還會聽取普通桌面用戶的點擊。

+0

不 - 這沒有幫助。當我添加我的$(item).click();在釋放鼠標或觸摸之後,它會循環運行。這實際上表明點擊被激發。但它只在發佈後纔會發生。 –

0

我找到了解決方案。 @ Dirk-Jan的想法與不觸發點擊,但只是參考href位置做它。

$('.long-touch').on('mousedown.LongTouch touchstart click', function(event){ 
     event.stopPropagation(); 
     event.preventDefault(); 
     var item = $(this); 
     setTimeout(function() { 
      var dest = item.attr('href'); 
      window.location.href = dest; 
     }, 300); 
    }); 
相關問題