Можно ли реализовать «долгое нажатие» в JavaScript (или jQuery)? Как?
(источник: androinica.com )
HTML
<a href="" title="">Long press</a>
JavaScript
$("a").mouseup(function(){
// Clear timeout
return false;
}).mousedown(function(){
// Set timeout
return false;
});
javascript
jquery
jquery-ui
jquery-mobile
jquery-events
Рэнди Майер
источник
источник
jQuery(...).longclick(function() { ... });
Ответы:
Нет никакой магии jQuery, только таймеры JavaScript.
источник
clearTimeout(pressTimer)
наmousemove
, если я что - то не хватает. Что, надо признать, вряд ли было бы беспрецедентным.Основываясь на ответе Maycow Moura, я написал это. Это также гарантирует, что пользователь не щелкнет правой кнопкой мыши, что вызовет длительное нажатие и работает на мобильных устройствах. DEMO
Вы также должны включить некоторый индикатор, использующий анимацию CSS:
источник
:hover
на сенсорных устройствах состояние липкое, может быть, это также применимо и здесь.touchend
должен запустить IMO, нет причин, чтобы он был липким, когда это специальный код для сенсорных устройств, может быть, я попробую что-нибудь завтра.Вы можете использовать событие taphold мобильного API jQuery.
источник
Я создал событие с длительным нажатием (0,5k чистого JavaScript), чтобы решить эту проблему, оно добавляет
long-press
событие в DOM.Прослушайте
long-press
на любом элементе:Слушайте для
long-press
на конкретного элемента:Работает в IE9 +, Chrome, Firefox, Safari и гибридных мобильных приложениях (Cordova и Ionic на iOS / Android)
демонстрация
источник
Хотя это выглядит достаточно простым, чтобы реализовать его самостоятельно с тайм-аутом и парой обработчиков событий мыши, он становится немного сложнее, если вы рассматриваете такие случаи, как нажатие-перетаскивание-отпускание, поддерживающее как нажатие, так и длительное нажатие на один и тот же элемент и работать с сенсорными устройствами, такими как iPad. В итоге я использовал плагин jQuery longclick ( Github ), который позаботился обо всем этом за меня. Если вам нужно поддерживать только устройства с сенсорным экраном, например мобильные телефоны, вы также можете попробовать событие Taphold jQuery Mobile .
источник
Плагин jQuery. Просто поставь
$(expression).longClick(function() { <your code here> });
. Второй параметр - длительность удержания; тайм-аут по умолчанию - 500 мс.источник
Для кросс-платформенных разработчиков (Примечание. Все ответы, приведенные до сих пор, не будут работать на iOS) :
Mouseup / down, похоже, нормально работает на Android, но не на всех устройствах, например (samsung tab4). На iOS вообще не работало .
Дальнейшие исследования показывают, что это связано с тем, что элемент имеет выделение, а собственное увеличение прерывает слушателя.
Этот прослушиватель событий позволяет открывать эскизное изображение в модальном режиме начальной загрузки, если пользователь удерживает изображение в течение 500 мс.
Он использует класс отзывчивого изображения, поэтому показывает увеличенную версию изображения. Этот фрагмент кода был полностью протестирован (iPad / Tab4 / TabA / Galaxy4):
источник
DEMO
источник
Ответ Diodeus потрясающий, но он не позволяет вам добавить функцию onClick, он никогда не запустит функцию удержания, если вы поместите onclick. И ответ Razzak почти идеален, но он запускает функцию удержания только при наведении курсора мыши, и, как правило, функция запускается, даже если пользователь продолжает удерживать.
Итак, я присоединился к обоим и сделал следующее:
источник
Для современных мобильных браузеров:
https://developer.mozilla.org/en-US/docs/Web/Events/contextmenu
источник
bind()
jquery 1.7+ =on()
иunbind()
=off()
Вы можете установить тайм-аут для этого элемента при нажатии мыши и очистить его при поднятии мыши:
При этом каждый элемент получает свой тайм-аут.
источник
$(this).mouseup(function(){});
не удаляет обработчик событий, а добавляет еще один..unbind
Вместо этого используйте .off()
сейчас вместо отмены привязки.Вы можете использовать taphold jquery-mobile. Включите jquery-mobile.js, и следующий код будет работать нормально
источник
Наиболее элегантным и чистым является плагин jQuery: https://github.com/untill/jquery.longclick/ , также доступный как packacke: https://www.npmjs.com/package/jquery.longclick .
Короче, вы используете это так:
Преимущество этого плагина в том, что, в отличие от некоторых других ответов здесь, события щелчка все еще возможны. Также обратите внимание, что перед курсором мыши происходит долгий щелчок, как и долгое нажатие на устройстве. Итак, это особенность.
источник
Для меня это работает с этим кодом (с jQuery):
источник
Вы можете проверить время, чтобы определить нажатие или длительное нажатие [jQuery]
источник
как это?
источник
Вы можете использовать
jquery
события Touch. ( см. здесь )источник
Мне нужно было что-то для событий длительного нажатия на клавиатуре, поэтому я написал это.
источник
Думаю, это может вам помочь:
источник