我想写的控制台是用户保持鼠标在一个元素上超过2秒,这是代码:
var $els = document.querySelectorAll('#myDiv');
for(i = 0; i < $els.length; i++) {
if ($($els[i]).data('track') == 'hover') {
$els[i].addEventListener('mouseover', function (e) {
setTimeout(function() {
if ($($els[i]).is(':hover')) {
console.log('mouse is still over this element');
}
}, 2000);
});
}
}
字符串
消息将在2秒后写入控制台,即使我将鼠标停留在元素上的时间少于2秒。我可能在这里漏掉了一些东西:
if ($($els[i]).is(':hover')) {
型
谢谢你的帮助
3条答案
按热度按时间noj0wjuj1#
创建一个全局变量
第一个月
在鼠标悬停时调用mouseover函数并设置
isMouseHover = true;
个并调用mouseout,当鼠标伸出并设置
isMouseHover = false;
个您可以随时使用这个
isMouseHover
变量。试试这个:
个字符
jchrr9hc2#
首先,你可能有几个元素具有相同的id,这是一件坏事,所以我改变了一个类。然后,我更新了你的代码,以简化它,并使它更符合jQuery的精神:
超文本标记语言:
字符串
JavaScript:
型
这是一个工作jsFiddle。
uplii1fm3#
在所有现代浏览器上都有一个简单得多的解决方案。
字符串