javascript - click/onclick 不适用于触摸屏

标签 javascript jquery

我正在使用一个网站以表格的形式显示信息。用户可以单击表格上的行来更改其颜色,而且我还有一个按钮,允许用户暂停刷新页面,以便不添加新信息。这两个功能都可以在桌面上使用,但不能在触摸屏上使用。我的第一个想法是,触摸板上的触摸不被视为点击,但经过研究后,该理论似乎并不正确。当我在桌面上运行它时,它工作得很好。我哪里出错了?

更新:我发现一些消息来源说点击不起作用,但有些消息仍然说它会在 300 毫秒的延迟下起作用。我仍然不确定哪个是正确的,但假设 click/onclick 不适用于触摸屏,那么有什么好的替代方案呢?

$(document).ready(function () {
    var timeOut 
    var timeOutInter = 10000;
    setRefresh(timeOutInter);
    $("#hdTable")
        .children("tbody")
        .children("tr")
        .children("td")
        .click(function () {
            $(this.parentNode).toggleClass("active");
        });
});

function enableRefresh(t) {
    timeOut = setTimeout(function () {
        location.reload();
    }, t);

    if ($("#pause").text() == "CONTINUE") {
        $("#pause").html("<a href='#' onclick='pause()'>PAUSE</a>");
    }
}

function setRefresh(t) {
    enableRefresh(t);

    // Control the pause button
    $("#pause").click(function () {
        if ($("#pause").text() == "PAUSE") {
            $("#pause").html("<a href='#' onclick='pause()'>CONTINUE</a>");
            clearTimeout(timeOut);
        } else {
            $("#pause").html("<a href='#' onclick='pause()'>PAUSE</a>");
            enableRefresh(t);
        }
    });
}

更新2:到目前为止,提供的解决方案都无法在平板电脑上运行,因此我从其中下载了Jquery移动库和tap功能。我的代码现在看起来像这样

$(document).ready(function () {
var timeOut 
var timeOutInter = 10000;
setRefresh(timeOutInter)
$("#hdTable").children("tbody").children("tr").children("td").on("tap", function () {
      $(this.parentNode).toggleClass("active");
});

});

function enableRefresh(t) {
    timeOut = setTimeout(function () {
        location.reload();
    }, t);

    if ($("#pause").text() == "CONTINUE") {
        $("#pause").html("<a href='#' onclick='pause()'>PAUSE</a>");
    }

}

function setRefresh(t) {
    enableRefresh(t);

    // Control the pause button
    $("#pause").on("tap", function () {
        if ($("#pause").text() == "PAUSE") {
            $("#pause").html("<a href='#' onclick='pause()'>CONTINUE</a>");
            clearTimeout(timeOut);
        } else {
            $("#pause").html("<a href='#' onclick='pause()'>PAUSE</a>");
            enableRefresh(t);
         }
    });
}

这再次适用于我的台式机,但不适用于平板电脑。移动图书馆应该可以与几乎任何触摸屏配合使用。我现在很迷茫。

更新3:在代码中添加了eventListener。我用的是线 $("*")[0].addEventListener("点击", function () { 它适用于台式机,但不适用于平板电脑。我使用其他关键字代替 click,例如 touchstart 和 touchend、vclick 和 tap。在平板电脑上没有得到任何回应有点奇怪,但我不知道从哪里开始研究这个问题。

最佳答案

触摸屏设备将响应

elem.addEventListener('click', functionName, false);

但设备等待查看点击是否变成双击时会有 300 毫秒的延迟。

有几种方法可以禁用延迟:

参见:

关于javascript - click/onclick 不适用于触摸屏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38376270/

相关文章:

javascript - jquery正则表达式替换2个分隔符之间

javascript - 如何在 Angular 中安排任务

javascript - 在 php foreach 循环中创建一个 javascript 倒数计时器

javascript - 谁能告诉我如何在centos中打开扩展名为.dat的文件?

jquery - 如何在不使用 Angular CLI 的情况下在索引页中添加 bootstrap 和 JQuery 引用

javascript - 带有 jQ​​uery 的动态 div,在点击时显示内容

javascript - 如何循环 jquery 返回的 JSON 数据?

JavaScript HTML5 : issue with drag-and-drop for a gmail-like upload interface

javascript - node.js:从函数返回未按预期运行

javascript - 当鼠标悬停在图像上时,如何使文本出现在页面上的设定位置