浏览器中的jquery touchstart

cou*_*011 18 jquery touch-event

由于大多数桌面浏览器尚不支持touchstart/touchend.如何创建与mousedown事件相同的touchstart事件(所有浏览器都支持).

我想要这样的东西

$('obj').bind('touchstart', function(e){
});
Run Code Online (Sandbox Code Playgroud)

将被翻译成

$('obj').bind('mousedown', function(e){
})
Run Code Online (Sandbox Code Playgroud)

ale*_*lex 26

你可以一次绑定两个......

$('obj').bind('touchstart mousedown', function(e){
});
Run Code Online (Sandbox Code Playgroud)

如果你想事件自动mousedown触发touchstart事件(所以你只需要绑定touchstart)使用...

$(document).bind('mousedown', function(event) {
    $(event.target).trigger('touchstart');
});
Run Code Online (Sandbox Code Playgroud)

请注意,这意味着mousedown事件必须传播到可以触发document自定义touchstart事件之前.这可能有意想不到的副作用.

  • 如果在某些时候这些解决方案将由同一设备支持,则这些解决方案可能会有点问题. (3认同)

Eri*_*orn 7

尝试这样的事情:

var clickEventType = ((document.ontouchstart!==null)?'click':'touchstart');

$('obj').bind(clickEventType, function(e){});
Run Code Online (Sandbox Code Playgroud)

更好的是,使用.on()进行绑定:

$('body').on(clickEventType, 'obj', function(e){});
Run Code Online (Sandbox Code Playgroud)

这会检查文档是否存在touchstart,如果存在,那么您的事件是"touchstart"(如果不存在)(大多数桌面浏览器)然后是"click".

您还可以使用相同的事件类型触发:

$('obj').trigger(clickEventType);
Run Code Online (Sandbox Code Playgroud)