4
var ClickOrTouchEvent = ("ontouchend" in document.documentElement ? "touchend" : "click");

$("#MyButton").on(ClickOrTouchEvent, function () {
  // Do something
});

这可行,但可能有一种更优雅的方法来检测触摸事件支持并分配“点击”或“触摸结束”事件。

4

1 回答 1

3

人们创建了许多插件来为他们的基于 jquery 的 Web 应用程序(如拖放)添加更高级的触摸支持。您可以使用其中之一,而不是尝试自己制作。

也就是说,在我的经验中,他们似乎都有自己的奇怪问题,所以你可能不得不考虑一下。看起来您的解决方案与他们的大多数解决方案属于同一家族。以下是几个流行的插件以及它们用于决定触摸或点击的解决方案:

TouchPunch为所有内容添加触摸,如下所示:

// Detect touch support and save it in support
  $.support.touch = 'ontouchend' in document;

  // Ignore browsers without touch support
  if (!$.support.touch) {
    return;
  }
//rest of plugin code follows

jquery-ui-for-ipad-and-iphone有一个方法,你必须调用它才能将触摸事件添加到所需的元素......但前提是浏览器支持它。

// Same deal. Detect touch support and save it in support
$.extend($.support, {
        touch: "ontouchend" in document
});

//
// Hook up touch events
//
$.fn.addTouch = function() {
        if ($.support.touch) {
                this.each(function(i,el){
                        el.addEventListener("touchstart", iPadTouchHandler, false);
                        el.addEventListener("touchmove", iPadTouchHandler, false);
                        el.addEventListener("touchend", iPadTouchHandler, false);
                        el.addEventListener("touchcancel", iPadTouchHandler, false);
                });
        }
};



....

然后在应用了 jQuery UI 函数的元素上调用 addTouch:

$('Element').dialog().addTouch();
于 2013-01-10T22:19:18.513 回答