【发布时间】:2021-11-20 22:49:42
【问题描述】:
我想将hover 上的链接颜色更改为橙色。
在移动设备上,当用户触摸该链接时,它会变成橙色,并且会一直保持橙色,直到用户点击离开。所以我想手动触发mouseout事件,让链接在1秒后失去悬停效果。
这是我尝试过的,但链接在 1 秒后仍为橙色:
$(window).on('load', function() {
$('a').on('click', function() {
// on a mobile device, I want the hover effect to end after 1 seconds
window.setTimeout(function() {
$('a').trigger('mouseout');
}, 1000);
});
});
a {
font-size: 2rem;
}
a:hover {
color: orange;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div>
<a href='#'>Test</a>
</div>
注意:这是一个简化的示例,在我的代码中,我没有使用计时器,而是想在 ajaxcomplete 上触发 mouseout 事件
$(document).on('ajaxComplete', function () {
$('a').trigger('mouseout');
});
【问题讨论】:
-
如果只是在点击时添加一个类,然后在触发 ajaxComplete 后删除该类,不是更简单吗?
-
就其价值而言,似乎大多数解决方案都会涉及一些针对悬停状态的 hack-ish 变通办法,这在无光标环境的上下文中并没有多大意义。如果悬停视觉处理存在问题,是否只抑制小屏幕或触摸界面的悬停状态会更好?
标签: javascript jquery css touchscreen mouseleave