iPad都能理解touchstart/-end和mousestart/-end。
是被炒魷魚是這樣的:
┌─────────────────────┬──────────────────────┬─────────────────────────┐
│Finger enters tablet │ Finger leaves tablet │ Small delay after leave │
├─────────────────────┼──────────────────────┼─────────────────────────┤
│touchstart │ touchend │ mousedown │
│ │ │ mouseup │
└─────────────────────┴──────────────────────┴─────────────────────────┘
你必須檢測,如果用戶是在平板電腦上,然後轉發在觸摸啓動的東西...:
/********************************************************************************
*
* Dont sniff UA for device. Use feature checks instead: ('touchstart' in document)
* The problem with this is that computers, with touch screen, will only trigger
* the touch-event, when the screen is clicked. Not when the mouse is clicked.
*
********************************************************************************/
var isIOS = ((/iphone|ipad/gi).test(navigator.appVersion));
var myDown = isIOS ? "touchstart" : "mousedown";
var myUp = isIOS ? "touchend" : "mouseup";
,然後綁定它是這樣的:
$('#next_item').bind(myDown, function(e) {
您也可以讓一個事件照顧它,請參閱:
http://benalman.com/news/2010/03/jquery-special-events/
基本歸按下事件:
$.event.special.myDown = {
setup: function() {
var isIOS = ((/iphone|ipad/gi).test(navigator.appVersion));
var myDown = isIOS ? "touchstart" : "mousedown";
$(this).bind(myDown + ".myDownEvent", function(event) {
event.type = "myDown";
$.event.handle.call(this, event);
});
},
teardown: function() {
$(this).unbind(".myDownEvent");
}
};
的jQuery 1.9.0 $.event.handle
更名後$.event.dispatch
,同時支持您可以編寫使用此回退:
// http://stackoverflow.com/questions/15653917/jquery-1-9-1-event-handle-apply-alternative
// ($.event.dispatch||$.event.handle).call(this, event);
$.event.special.myDown = {
setup: function() {
var isIOS = ((/iphone|ipad/gi).test(navigator.appVersion));
var myDown = isIOS ? "touchstart" : "mousedown";
$(this).bind(myDown + ".myDownEvent", function(event) {
event.type = "myDown";
($.event.dispatch||$.event.handle).call(this, event);
});
},
teardown: function() {
$(this).unbind(".myDownEvent");
}
};
哇,這個答案是絕對完美的。幹得好! – Jlange
映射touchstart命令以取代鼠標點擊命令時要小心。你失去了一個非常有價值的點擊事件功能。點擊後觸摸移動取消點擊。無論觸摸移動事件如何,touchstove後跟touchmove都會觸發/點擊。因此,如果您不小心點擊了某些內容,則無法將手指從元素上移開以取消點擊。 – Alex
@Alex你是對的,但你可以再次檢查'touchstart'和'touchend'上的目標是否相同。你可以在'event.originalEvent.targetTouches [0] .pageX'和'pageY'下找到pageX和pageY,然後檢查手指是否移動。 – andlrc