Это, вероятно, излишне, но вот некоторые расширения jQuery, которые я использую для облегчения сенсорных событий в разных браузерах:
jQuery.fn.touchstart = function (callback) {
this.each(function () {
var _self = jQuery(this);
var onTouchstart = function (ev) {
if (ev.originalEvent) {
if (ev.originalEvent.targetTouches) {
AddTouchPropertiesToJQEventObject(ev);
callback.call(this, ev);
}
}
};
_self.bind('touchstart', onTouchstart);
});
return this;
};
jQuery.fn.touchmove = function (callback) {
this.each(function () {
var _self = jQuery(this);
var onTouchMove = function (ev) {
if (ev.originalEvent) {
if (ev.originalEvent.targetTouches) {
AddTouchPropertiesToJQEventObject(ev);
callback.call(this, ev);
}
}
};
_self.bind('touchmove', onTouchMove);
});
return this;
};
jQuery.fn.touchend = function (callback) {
this.each(function () {
var _self = jQuery(this);
var onTouchEnd = function (ev) {
var lastTouchMoveInfo = _self.data('lastTouchMoveInfo');
ev = $.extend(ev, lastTouchMoveInfo);
callback.call(this, ev);
};
var onTouchMove = function (ev) {
var lastTouchMoveInfo = {
pageX: ev.pageX,
pageY: ev.pageY,
touches: ev.touches
};
_self.data('lastTouchMoveInfo', lastTouchMoveInfo);
};
_self.touchstart(onTouchMove);
_self.touchmove(onTouchMove);
_self.bind('touchend', onTouchEnd);
});
return this;
};
var AddTouchPropertiesToJQEventObject = function (jqEventObject) {
jqEventObject.pageX = jqEventObject.originalEvent.targetTouches[0].pageX;
jqEventObject.pageY = jqEventObject.originalEvent.targetTouches[0].pageY;
jqEventObject.rotation = jqEventObject.originalEvent.rotation;
jqEventObject.scale = jqEventObject.originalEvent.scale;
jqEventObject.targetTouches = jqEventObject.originalEvent.targetTouches;
jqEventObject.touches = jqEventObject.originalEvent.touches;
};
В основном вы хотите привязать к touchstart
, touchmove
и touchend
,Или, может быть, просто touchstart
за то, что вы делаете.