Javascript 带有tel:的锚定标记上的preventDefault不起作用

Javascript 带有tel:的锚定标记上的preventDefault不起作用,javascript,jquery,Javascript,Jquery,当用户点击一个电话号码时,它不应该在桌面上做任何事情,而应该在手机上拨打该号码。我原以为解决方案简单到在桌面上返回false或preventDefault,但到目前为止似乎不起作用: <a href="tel:555555">555-555</a> 有没有一个像这样简单的解决方案能够真正起作用,或者是检测mobile并更改href属性的最佳方法,如其他问题所示 解决方案 感谢下面的答案mouseup()运行,但无法防止默认设置。这是使用Modernizer的最终代码:

当用户点击一个电话号码时,它不应该在桌面上做任何事情,而应该在手机上拨打该号码。我原以为解决方案简单到在桌面上返回false或preventDefault,但到目前为止似乎不起作用:

<a href="tel:555555">555-555</a>
有没有一个像这样简单的解决方案能够真正起作用,或者是检测mobile并更改href属性的最佳方法,如其他问题所示

解决方案

感谢下面的答案
mouseup()
运行,但无法防止默认设置。这是使用Modernizer的最终代码:

$('a[href^="tel"]').on('click',function (e) {
    if ($("html").hasClass("no-touch")) {
        e.preventDefault();
    }
});
试着

function callMethod(){
  //do stuff here
}
$('a[href^="tel"]').on('click',function (e) {
    e.preventDefault();
    callMethod();
})

$('a[href^="tel"]').on('touchstart',function (e) {
    callMethod();
})
您可以这样做:

$('.no-touch a[href^="tel"]').on('click',function (e) {
    e.preventDefault();
});
如果您需要它在触摸设备上工作,并且正在使用Modernizer(看起来是这样),您可以这样做:

$('a[href^="tel"]').on('click',function (e) {

   if (!Modernizr.touch) {
       e.preventDefault();
   }

    ... my touch code ...
});

啊,是的,我完全可以做到。稍微干净一点。@DustinSilk,使用此方法,您需要为移动设备使用另一个功能。@BhojendraNepal如果它启用了触摸功能,那么我们不会阻止默认设置,它将继续正常从href调用外部电话应用程序。在触摸屏和桌面设备上单击事件触发
$('a[href^="tel"]').on('click',function (e) {

   if (!Modernizr.touch) {
       e.preventDefault();
   }

    ... my touch code ...
});