jQuery函数在浏览器上但不在iPad上

时间:2013-10-21 22:49:22

标签: jquery asp.net-mvc-4 web-applications ipad

我有以下功能,可以在所有浏览器上完美运行。但是,该功能(主要用于记录用户)在iPad上不起作用(v3)。请注意,这是一个网络应用程序。

我最初的想法是window.location,我听说它在iPad上运行不正常。但我尝试location.hrefwindow.location.href也无济于事。

没有控制台错误或奇怪的行为。

任何人遇到类似的问题吗?

$(document).on('touchstart click', '.sb-sign-out', function (e) {
    e.stopPropagation(); e.preventDefault();
    $.post('@Url.Action("clientLogout", "master")', {}, function () {
        window.location = "@Url.Action("campaigns", "master")";
    });
});

这是DIV:

<div class="sb-sign-out button round">LOGOUT</div>

2 个答案:

答案 0 :(得分:2)

如上面的评论所述,此问题是所有非a-href按钮都应使用touchendtouchstart。这解决了我的问题。

$(document).on('touchend click', '.sb-sign-out', function (e) {
    e.stopPropagation(); e.preventDefault();
    $.post('@Url.Action("clientLogout", "master")', {}, function () {
        window.location = "@Url.Action("campaigns", "master")";
    });
});

答案 1 :(得分:1)

我认为使这项工作可靠的最佳方法是通过jquery mobile中的'tap'事件处理程序,例如:     $(document).on('click tap',elem,function(e){});

见这里:http://api.jquerymobile.com/tap/

对于普通的jquery这个插件会给你相同的能力: http://plugins.jquery.com/tap/

touchend的问题在于,如果有人触摸按钮,然后决定不注销并将手指从按钮移开,它会被触发但不想要...