У меня есть всплывающая подсказка на основе CSS, которая появляется при наведении курсора (mouseenter
) и исчезает при mouseout
/ mouseleave
; при щелчке запускается некоторый код, который удерживает пользователя на той же странице. Однако на мобильном устройстве части mouseenter
и click запускаются одновременно, что дает мне видимую подсказку, которая не исчезает, пока вы не нажмете где-нибудь еще на странице, поскольку нет естественного mouseout
/ mouseleave
.
Чтобы улучшить UX, я пытался смоделировать событие mouseout
/ mouseleave
на элементе, по которому щелкнули мышью, через 1,5 с (используя setTimeout()
), которое не работает:
$('.my-element').on('click', function() {
// Other stuff
setTimeout(function() {
$(this).trigger('mouseleave');
}, 1500);
});
и
$('.my-element').on('click', function() {
// Other stuff
setTimeout(function() {
$(this).mouseleave();
}, 1500);
});
Я также попытался использовать указанный c селектор элемента вместо $(this)
, который тоже не работал.
Теперь я пытаясь смоделировать щелчок страницы, чтобы сбросить событие при наведении, используя:
$('.my-element').on('click', function() {
// Other stuff
setTimeout(function() {
$('body, html, #main').trigger('click');
}, 1500);
});
Если я инициирую щелчок по другому элементу, такому как мое меню гамбургера, триггер работает. И если я вручную нажимаю где-нибудь еще на странице, он сбрасывает всплывающую подсказку и скрывает ее, чего я и пытаюсь достичь.
Я пытаюсь просто смоделировать то, что произойдет на mouseout
щелчок по событию или странице в отличие от попытки нацеливания на сенсорные устройства, так как остальная часть поведения подходит для мобильных устройств.