Я видел много similar questions, но удивительно, что они совершенно разные.JQuery mobile: сделать одно касание - перемещение по нескольким элементам ведет себя как наведение мыши
Я хочу, чтобы пользователь с сенсорным экраном мог протащить палец по нескольким элементам на странице одним махом, а по мере того, как его палец перемещается из одного элемента в другой, эти элементы вызывают события, похожие на если мышь была перемещена над ними. Таким образом, каждый элемент будет запускать что-то, что эквивалентно событию touchenter
и touchleave
или что-то в этом роде.
JQuery мобильный поддерживает ряд сенсорных событий: touchstart
, touchend
, touchmove
, touchcancel
, tap
, swipe
, taphold
, но я не могу показаться, чтобы использовать их для достижения.
Скажем, у меня есть п элементов, у меня есть такой код:
function applyDown(idx){ /*...*/ }
function applyUp(idx){ /*...*/ }
function go(idx, fn){
return function(){
fn(idx);
}
}
for (var i = 0; i < n; i++){
$(".element_"+i).on("touchstart", go(i, applyDown));
$(".element_"+i).on("touchmove", go(i, applyDown));
$(".element_"+i).on("touchend", go(i, applyUp));
}
Если я начинаю касаться одного элемента и проведите пальцем к другому элементу, а затем отпустить, то второй элемент никогда не applyDown()
называется на ней, и первый элемент имеет только applyUp()
, вызываемый, когда палец освобождается от экрана (тогда его следует вызвать, как только палец покинет элемент).
Как я могу достичь того, чего хочу?
Я использовал touchmove
, потому что думал, что это решит проблему, но поведение идентично или без него.
Эти элементы на самом деле являются сложными формами SVG, поэтому я не знаю, будет ли это исключать некоторые хакерские (?) Альтернативы, такие как, например, использование javascript для вычисления того, какой элемент палец завершен в любой момент времени ,