我最近移动到Jquery mobile for Phonegap应用程序,因为300ms webkit点击延迟太迟了,我现在却有相反的问题,
我正在研究一个基本上是10位数字的针垫,如果用户快速连续点击它们,它偶尔会触发pin事件两次。我的每个pin按钮都是div e.g。
<div class='grid'>
<div class="flexone"><div class="pin-num">1</div></div>
<div class="flexone"><div class="pin-num">2</div></div>
<div class="flexone"><div class="pin-num">3</div></div>
</div>
每次点击然后我运行以下功能
$('.pin-num').on("tap", function(){
var pin = $(this).text();
updatePin(pin);
});
反过来触发以下功能
function updatePin(pin) {
var count = "0";
if($('.psone').text() != "") { count++; }
if($('.pstwo').text() != "") { count++; }
if($('.psthree').text() != "") { count++; }
if($('.psfour').text() != "") { count++; }
if(count == "0") { hideStatus(); $('.ph').text(""); $('.psone').text(pin); $('.psone').attr("pin", pin); $('.pin-cancel').html('<img class="pin-back" src="img/back.png">'); }
if(count == "1") { $('.psone').text("•"); $('.pstwo').text(pin); $('.pstwo').attr("pin", pin);}
if(count == "2") { $('.pstwo').text("•"); $('.psthree').text(pin); $('.psthree').attr("pin", pin); }
if(count == "3") { $('.psthree').text("•"); $('.psfour').text("•"); $('.psfour').attr("pin", pin); checkPin(); }
if(count == "4") { $('.psone').text(pin); $('.pstwo').text(""); $('.psthree').text(""); $('.psfour').text(""); hideStatus(); $('.pin-cancel').html('<img class="pin-back" src="img/back.png">'); }
}
我需要做的是能够不允许两个敲击事件在彼此的x毫秒内触发,我猜测大约30ms应该停止意外触发。
我在网上搜索并找不到任何相关内容,只是删除延迟的问题。谁能建议他们如何接近这个?
答案 0 :(得分:1)
以这种方式尝试:
$('.pin-num').on("tap", function(){
event.stopPropagation();
event.preventDefault();
var pin = $(this).text();
updatePin(pin);
});