Ответ 1
Мне всегда интересно, что будет с этим делать на гибридных устройствах, поддерживающих события Touch и click/hover. В этом случае, как только вы коснетесь, на странице не будет больше событий наведения или клика. Что происходит, когда пользователь один раз касается экрана (по какой причине когда-либо), а затем, возможно, захочет вернуться с помощью мыши или тачпада? Сайт сломан для него (по крайней мере, если он не решает, следовательно, продолжать с прикосновениями).
Я лично использую флаг script ниже и проверяю даже ввод мыши и события оставления мыши для возможных касаний. Я не знаю, хорошая ли это техника. В моем случае это работает очень хорошо.
var touched = false;
$("#someElement")
.mouseenter( function() {
if ( !touched ) {
// some hover action
// also secure to be in NO WAY triggered on touch device
};
}
.mouseleave( function() {
if ( !touched ) {
// some mouse leave reset hover action
// also secure to be in NO WAY triggered on touch device
};
}
.click( function() {
if ( !touched ) {
// do something
// no double trigger on touch device
};
}
.on( 'touchstart', function() {
touched = true;
setTimeout( function() {
touched = false;
}, 300 );
// do touchstart stuff (similar to click or not)
};
Я не профессиональный кодер. Любому из них предлагается оптимизировать это. На моей веб-странице это, кажется, единственный способ избежать скрытых (двойных) триггеров на сенсорном устройстве (iPad протестирован).
Я также знаю, что это не совсем тот ответ на вопрос, который является дополнением к первому ответу (и его хорошему комментарию), который в моих глазах не полностью разрешает гибридную проблему, даже если она широко используется.
В любом случае, это поможет на его пути.