猿问

长期在JavaScript?

长期在JavaScript?

是否可以在JavaScript(或jQuery)中实现“长按”?怎么样?

HTML

<a href="" title="">Long press</a>

JavaScript的

$("a").mouseup(function(){
  // Clear timeout
  return false;}).mousedown(function(){
  // Set timeout
  return false; });


慕尼黑8549860
浏览 493回答 3
3回答

慕村9548890

没有'jQuery'魔法,只有JavaScript定时器。var&nbsp;pressTimer;$("a").mouseup(function(){ &nbsp;&nbsp;clearTimeout(pressTimer); &nbsp;&nbsp;//&nbsp;Clear&nbsp;timeout &nbsp;&nbsp;return&nbsp;false;}).mousedown(function(){ &nbsp;&nbsp;//&nbsp;Set&nbsp;timeout &nbsp;&nbsp;pressTimer&nbsp;=&nbsp;window.setTimeout(function()&nbsp;{&nbsp;...&nbsp;Your&nbsp;Code&nbsp;...},1000); &nbsp;&nbsp;return&nbsp;false;&nbsp;});

aluckdog

根据Maycow Moura的回答,我写了这个。它还确保用户不会进行右键单击,这会触发长按并在移动设备上运行。DEMOvar&nbsp;node&nbsp;=&nbsp;document.getElementsByTagName("p")[0];var&nbsp;longpress&nbsp;=&nbsp;false;var&nbsp;presstimer&nbsp;=&nbsp;null;var&nbsp;longtarget&nbsp;=&nbsp;null;var&nbsp;cancel&nbsp;=&nbsp;function(e)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(presstimer&nbsp;!==&nbsp;null)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;clearTimeout(presstimer); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;presstimer&nbsp;=&nbsp;null; &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;this.classList.remove("longpress");};var&nbsp;click&nbsp;=&nbsp;function(e)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(presstimer&nbsp;!==&nbsp;null)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;clearTimeout(presstimer); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;presstimer&nbsp;=&nbsp;null; &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;this.classList.remove("longpress"); &nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(longpress)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;false; &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;alert("press");};var&nbsp;start&nbsp;=&nbsp;function(e)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;console.log(e); &nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(e.type&nbsp;===&nbsp;"click"&nbsp;&&&nbsp;e.button&nbsp;!==&nbsp;0)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return; &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;longpress&nbsp;=&nbsp;false; &nbsp;&nbsp;&nbsp;&nbsp;this.classList.add("longpress"); &nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(presstimer&nbsp;===&nbsp;null)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;presstimer&nbsp;=&nbsp;setTimeout(function()&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alert("long&nbsp;click"); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;longpress&nbsp;=&nbsp;true; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;},&nbsp;1000); &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;false;};node.addEventListener("mousedown",&nbsp;start);node.addEventListener("touchstart",&nbsp;start);node.addEventListener("click",&nbsp;click);node.addEventListener("mouseout",&nbsp;cancel);node.addEventListener("touchend",&nbsp;cancel);node.addEventListener("touchleave",&nbsp;cancel);node.addEventListener("touchcancel",&nbsp;cancel);您还应该使用CSS动画包含一些指标:p&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;background:&nbsp;red; &nbsp;&nbsp;&nbsp;&nbsp;padding:&nbsp;100px;}.longpress&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;-webkit-animation:&nbsp;1s&nbsp;longpress; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;animation:&nbsp;1s&nbsp;longpress;}@-webkit-keyframes&nbsp;longpress&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;0%,&nbsp;20%&nbsp;{&nbsp;background:&nbsp;red;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;100%&nbsp;{&nbsp;background:&nbsp;yellow;&nbsp;}}@keyframes&nbsp;longpress&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;0%,&nbsp;20%&nbsp;{&nbsp;background:&nbsp;red;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;100%&nbsp;{&nbsp;background:&nbsp;yellow;&nbsp;}}

慕斯709654

您可以使用jQuery mobile API的taphold事件。jQuery("a").on("taphold",&nbsp;function(&nbsp;event&nbsp;)&nbsp;{&nbsp;...&nbsp;}&nbsp;)
随时随地看视频慕课网APP
我要回答