想要在按下按钮时取消事件

时间:2018-08-14 13:02:20

标签: javascript jquery ios events touchstart

我有一个条件,我想杀死同一事件(touchstart),同时按住按钮一段时间(对于iOS)。

  $("#btn").on("touchstart", function(evt){
     currBtn = $(this);
     timeoutId = setTimeout(()=>{
        changeOpacity(currBtn);
     }, 1500);
     return false;
  });

2 个答案:

答案 0 :(得分:0)

我提出了解决方案。您只需要将mousedown事件的touchstart事件更改为

function changeOpacity() {
   $("#btn").css("opacity",0.3);
}

function addEvent() {
    //add the event
    $( "#btn" ).on("mousedown",onTouchStarts);
}

function removesEvent() {
    //removes the event
$( "#btn" ).off("mousedown",onTouchStarts);
}



function onTouchStarts(evt){
  console.log("mousedown");
  currBtn = $(this);
  timeoutId = setTimeout(()=>{
    changeOpacity(currBtn);
    removesEvent();
  }, 1500);
  return false;
}

addEvent();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button id="btn">Button</button>

答案 1 :(得分:-1)

使用preventDefault()可抑制通常会触发的任何默认行为

evt.preventDefault();