jQuery и mouseleave для сенсорного экрана / планшета
у меня есть модальная коробка, которая исчезает вmouseenter
и заканчивается на mouseleave
. Единственная проблема заключается в том, что при использовании устройства с сенсорным экраном, такого как планшет, я не могу получить модальный fadeout
как только он отображается на странице. Есть ли способ изменить этот код, где в любое время пользователь касается вне модального окна, он будет fadeout
?
$(".tiptrigger").mouseenter(function() {
var s_id = $(this).attr('id'); // There may be more than one per page
$("#tiptip_holder-"+s_id).fadeIn("fast");
});
$(".tiptrigger").mouseleave(function() {
var s_id = $(this).attr('id');
$("#tiptip_holder-"+s_id).fadeOut("slow");
});
2 ответов
Вы можете попробовать использовать сенсорные события (не проверял):
$('.tiptrigger').on('mouseenter touchstart', function(){
var s_id = $(this).attr('id'); // There may be more than one per page
$("#tiptip_holder-"+s_id).fadeIn("fast");
});
$('.tiptrigger').on('mouseleave touchend', function(){
var s_id = $(this).attr('id');
$("#tiptip_holder-"+s_id).fadeOut("slow");
});
редактировать
можно попробовать:
$('.tiptrigger').on('mouseenter touchstart', function(e){
var s_id = $(this).attr('id'); // There may be more than one per page
$("#tiptip_holder-"+s_id).fadeIn("fast");
e.stopPropagation()
});
$('.tiptrigger').on('mouseleave', function(e){
var s_id = $(this).attr('id');
$("#tiptip_holder-"+s_id).fadeOut("slow");
});
$('body').on('touchstart', function(e){
$("div[id^='tiptip_holder']").fadeOut("slow");
});
события mouseMouse (mouseover
, mouseout
, mousedown
, mouseup
, mousemove
и т. д.) относятся к устройству ввода мыши. Клавиатура keydown
, keypress
и keyup
. Касание touchstart
, touchmove
, touchend
и touchcancel
. Webkit на iPhone / iPad / etc имеет дополнительные события start/move/end, специфичные для Apple.
таким образом, вы должны проверять устройство, на котором вы запускаете приложение, а затем обрабатывать код соответственно.