2016-05-26 4 views
1

Есть ли лучший способ обработать «зависание» (это задействовано, а затем активировать действие до тех пор, пока что-то другое не будет задействовано) на сенсорных устройствах, чем с помощью глобального обработчика событий, чтобы обнаружить, когда пользователь удаляет что-то еще?Есть ли лучший способ справиться с «зависанием» на сенсорных устройствах?


Например, этот код может работать, но она опирается на слушателе событий, прикрепленный к телу документа, так что сомнительна точка зрения производительности.

//note a namespace is used on the event to clear it without clearing all event listeners 
$('myDiv').on('touchstart.temp', function() { 
    //do stuff 
    $('body').not(this).on('touchstart.temp', function() { 
     //undo stuff 
     $('body').not(this).off('touchstart.temp'); 
    }); 
}); 

ответ

1

В будущем вы должны будете использовать события touchenter и touchleave, которые применяются к определенным элементам.

$("myDiv").on("touchenter mouseover", function() { 
    // do hover start code 
}).on("touchleave mouseleave", function() { 
    // do hover end code 
}); 

Но согласно MDN, это просто предложение, которое не было реализовано еще.

Если вы используете jQuery Mobile, вы можете использовать события vmouseover и vmouseleave, которые имитируют события мыши на мобильных устройствах.

0

События Javascript onmouseover и onmouseout работают отлично! :)

Он не будет работать на мобильных устройствах, но я считаю, что вы это ожидали.

Редактировать: Я также заметил, что вы включили тег JQuery. Вы также можете использовать метод наведения JQuery, если это вам по душе.

т.е.

$('div').hover(function(){ 
    $(this).css('background-color', 'red'); 
    }, function(){ 
    $(this).css('background-color', 'blue'); 
}); 

Пример: https://jsfiddle.net/sofdz0s2/

Как для зависания на все сенсорные устройствах, он не является постоянным между всеми сенсорными устройствами. Моя ручка не держится после крана. (Я пытался нажав на DIV, что изменения, а затем на зеленый DIV, но он все вертелся после крана.)

Edit 2:

Как говорили в комментариях, TouchEnter и TouchLeave, вероятно, что вам хотеть.

Надеюсь, это поможет!

+0

Нет, мне это нужно для работы на мобильных устройствах, любых сенсорных устройствах, вот и проблема. –

+0

@Viziionary Вы пробовали jQuery-Mobile? – Barmar

+0

@ Бармар Должен ли я? Я стараюсь, по крайней мере, знать, как делать что-то в vanilla JS, прежде чем решить, стоит ли добавлять дополнительные функции библиотеки. –

Смежные вопросы