jQuery如何检测/目标触摸但不是点击?
问题描述:
我有一个工具提示,当目标文本悬停时激活(显示)。对于触摸设备,用户可以单击目标文本并显示工具提示,然后当他们触摸TOOLTIP(不是目标文本)时,工具提示将隐藏。但我希望带鼠标的人能够选择工具提示中的文本,问题是当他们点击工具提示时,它隐藏起来,这是触摸设备的功能。因此,对于计算机(带有鼠标),我希望工具提示可以在不隐藏的情况下点击,但是在触摸设备上,我希望工具提示在点击时隐藏,以方便用户。希望这是有道理的。jQuery如何检测/目标触摸但不是点击?
这是什么最好的方法呢?有没有办法让我说:“当触摸,做到这一点,但点击(用鼠标),做到这一点”?
答
这可能是矫枉过正,但这些都是一些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
为你在做什么。
http://jquerymobile.com/ – 2012-03-05 17:06:43