确定当前是否单击了一个按钮(单击按住)?

时间:2017-08-30 15:58:23

标签: javascript

在纯JavaScript中,我想确定当前是否按下按钮。

我不想使用在mousedown,mouseup或任何其他鼠标事件上设置标志的解决方案

有一个循环,由鼠标按下触发,此循环在setTimeout之后运行。 mouseup,mousedown的监听器不可用 - 我想做类似的事情:

let mainButton = document.getElementById("main-button");
// inside the callback of a setTimeout somewhere in the distant future.....
if(mainButton.??? isDown/style.isCurrrentlyClicked){
     //doSomething
}

同样,没有用于此的mouseup / down标志。感谢。

2 个答案:

答案 0 :(得分:2)

if ( $( '#btn:active' ).length ) // your button is active

答案 1 :(得分:1)

你可以玩这种风格,但这非常hacky



setInterval(() => {
  let button = $('#btn');
  let color = button.css('background-color');
  if (color == 'rgb(255, 255, 255)') {
    $('#status').text('Not clicked');
  } else {
  debugger;  $('#status').text('Clicked');
  }
}, 300);

button {
  background-color: #FFF
}

button:active {
  background-color: #F00;
}

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button id="btn">Click me</button>
<p id='status'></p>
&#13;
&#13;
&#13;

考虑到使用setInterval而不是事件处理程序只是一种轮询方法:如果间隔太短,性能将受到影响,但如果时间太长,响应性将会很糟糕