Javascript Touchend在模糊前发射

Javascript Touchend在模糊前发射,javascript,jquery,touch,Javascript,Jquery,Touch,我正在尝试使用“touchend”实现“tap”事件。不幸的是,当关注输入时,输入的“模糊”事件在“touchend”之后触发 复制:焦点输入=>点击按钮 $(body).append("<div id='abc'>" + "<input class='text' type='text'/>" + "<button href='#'>save</button>" + "</div>"); var $input =

我正在尝试使用“touchend”实现“tap”事件。不幸的是,当关注输入时,输入的“模糊”事件在“touchend”之后触发

复制:焦点输入=>点击按钮

$(body).append("<div id='abc'>" +
    "<input class='text' type='text'/>" +
    "<button href='#'>save</button>" +
    "</div>");
var $input = $("#abc").children("input");
$input.bind("blur", function () {
    alert("blur");
});
var $button = $("#abc").children("button");
$button.bind("touchend", function (event) {
    alert("touchend");
});
$(正文)。追加(“”+
"" +
“保存”+
"");
var$input=$(“#abc”).children(“input”);
$input.bind(“模糊”,函数(){
警报(“模糊”);
});
var$button=$(“#abc”).children(“button”);
$button.bind(“touchend”),函数(事件){
警报(“触摸端”);
});

触摸端事件不是点击事件。要模拟“单击”事件,需要在执行单击逻辑之前设置焦点。 下面是执行此技巧的代码。不要看全球,这只是个想法。也不检查多点触摸等

$(body).append("<div id='abc'>" +
    "<input class='text' type='text'/>" +
    "<button href='#'>save</button>" +
    "</div>");
var $input = $("#abc").children("input");
$input.bind("blur", function () {
    alert("blur");
});
var $button = $("#abc").children("button");
$button.bind("touchend", function (event) {
    if (!swipeDetected) {
        $button.focus();
        //Click logic here
    }
    alert("touchend");
});

var swipeDetected = false,
    startPos = null;
$(document.body).bind("touchstart", function (event) {
    swipeDetected = false;
    var touchEvent = event.originalEvent.touches[0];
    startPos = {
        pageX: touchEvent.pageX,
        pageY: touchEvent.pageY
    };
});
$(document.body).bind("touchmove", function (event) {
    var touchEvent = event.originalEvent.touches[0];
    if (Math.abs(startPos.pageX - touchEvent.pageX) > 10 || Math.abs(startPos.pageY - touchEvent.pageY) > 10) {
        swipeDetected = true;
    }
});
$(正文)。追加(“”+
"" +
“保存”+
"");
var$input=$(“#abc”).children(“input”);
$input.bind(“模糊”,函数(){
警报(“模糊”);
});
var$button=$(“#abc”).children(“button”);
$button.bind(“touchend”),函数(事件){
如果(!swipeDetected){
$button.focus();
//点击这里的逻辑
}
警报(“触摸端”);
});
var swipedtected=false,
startPos=null;
$(document.body).bind(“touchstart”,函数(事件){
swipeDetected=假;
var touchEvent=event.originalEvent.touch[0];
startPos={
pageX:touchEvent.pageX,
pageY:touchEvent.pageY
};
});
$(document.body).bind(“touchmove”,函数(事件){
var touchEvent=event.originalEvent.touch[0];
if(Math.abs(startPos.pageX-touchEvent.pageX)>10 | | Math.abs(startPos.pageY-touchEvent.pageY)>10){
swipeDetected=true;
}
});