- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有以下功能。目的是当您将鼠标悬停在具有 .toolTip
类的项目上时,它会在 3 秒后记录您悬停在该元素上的 data-tooltip
。但是,如果您的光标离开该项目,它应该取消 setTimeout 并且不显示消息。
“Timeout set”和“Timeout cleared”消息按预期触发,但指定函数仍会触发。我做错了什么?
$(document).on("hover",".toolTip", function() {
var toolTip = $(this);
var toolTipMessage
var hoveringNow = toolTip.attr("data-hovering-now");
if(typeof hoveringNow !== typeof undefined && hoveringNow !== false) {
toolTip.removeAttr('data-hovering-now');
clearTimeout(toolTipMessage);
console.log('Timeout cleared');
}
else {
toolTip.attr('data-hovering-now', true);
toolTipMessage = setTimeout(showToolTip, 3000, toolTip.attr("data-tooltip"));
console.log('Timeout set');
}
});
function showToolTip(message) {
console.log(message);
}
最佳答案
您的变量 toolTipMessage
仅存在于悬停时执行的函数的执行上下文中,下次悬停该元素时,该变量不再存在(或者,更确切地说,您有一个不同同名变量)。
要使变量在两次执行之间保持不变,您需要在封闭的执行上下文中定义该变量 - 例如在 hover
处理程序之外。
var toolTipMessage = null;
$(document).on("hover",".toolTip", function() {
....
});
关于javascript - 尽管有 clearTimeout,setTimeout 仍然会触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35314504/
如何清除浏览器中另一个选项卡中设置的超时? 我尝试在 localStorage 中存储超时引用,但无法清除timeout function setIdleTimeout() { var idl
我正在为我的代码寻找解决方案。我的clearTimeout 函数在stop() 中不起作用;和开始();功能,有人知道如何解决这个问题吗? 停止、启动、复位按钮都有setTimeout功能。我想做的是
这是一个JSFiddle问题的示例。 当我单击按钮时,所有内容都会按预期淡出并在 3 秒内返回或直到单击为止。但是,如果我不等待 3 秒,而是提前单击它,然后快速单击按钮,它会在 3 秒内返回。 编辑
我有一个带有子菜单的菜单,当您单击按钮时,该子菜单会滑出。我希望它在 7 秒后滑回(如果尚未重新单击)。我想在重新单击时重置计时器,以便在再次单击时从头开始。 $(".connect").cl
这些是相关的行。 // In the parent page I set the timer and attach its handle to the window window.warnTo = w
好吧,我在users.js.coffee中有一些coffeescript,它在滚动用户名时运行twitter Bootstrap 弹出窗口(当前正在工作)现在我想要做的是使用超时来隐藏弹出窗口,如果用
假设我有一个运行客户端的函数render,可能需要 100-1000 毫秒我有一个函数fetch,它发出服务器请求,并在成功时清除渲染超时,然后以 100 毫秒的超时调用渲染。我有一个按钮,oncli
我有一个动态更新的计时器。 ----------------更新------------------------当我第一次发布问题时,我认为从主干 View 中调用计时器并不重要,但我相信因此,我不能
Javascript 滑动菜单保持打开状态。 clearTimeout 没有按预期工作 - 你能帮帮我吗 #Menu1 {position:absolute; top:-190px; left
我正在处理一个模板文件,并且有 3 个列表项,当您滚动鼠标时会为每个加载隐藏的 div 突出显示文本,使其可见。在鼠标移出时,在 div 再次隐藏之前设置延迟。 clearTimeout 适用于用户是
当我尝试 clearTimeout() 时,超时只是继续。代码: function autoSlides(x) { var timeOut; if (x == 1) {
我有一个警告消息栏,它会在用户单击特定链接时向下滑动。警报栏会在指定时间段后向上滑动。如果用户多次单击此链接,我想重置计时器,向上滑动警告栏然后再次向下滑动(重置计时器)。 $(document).r
我认为这与嵌套函数有关,但它们必须是这样的。为什么它不起作用?我在做傻事吗?这是一个孤立的示例,我必须使用 $(this),所以我似乎必须嵌套函数? HTML: Hover box, it tur
我有一组复杂的 setTimeout() 调用可以触发一些 jQuery 动画。我希望能够在不知道它们的各种引用的情况下将它们全部清除。 此代码将不起作用 - 但应该说明我正在尝试做什么......
谁能看出以下代码有什么问题。它应该显示从 30 开始的倒计时,然后使用 jquery 的 ajax load() 函数刷新页面。 它在第一次或第二次倒计时时工作正常,但随后计时器开始倒计时太快,有时会
var clearId:int = setTimeout(function():void{ //some code here clearTimeout(
我的脚本: var pics = [ "mads.jpeg" ,"niggs.jpg", "rits.jpeg"]; var totalPics = pics.length; var frame
有人可以向我解释一下我下面的代码有什么问题吗?我声明一个公共(public)变量并将其设置为 setTimeout,如果不为空,则在再次设置之前清除超时。当我尝试清除超时时,我得到了未定义的信息,因此
我正在尝试在普通 JavaScript 中实现 debounce 函数。我不确定为什么clearTimeout不清除超时对象。在每个事件触发器中,回调函数setTimeout如果距上次调用不超过5秒,
我的主要问题是:clearTimeout() 是否会停止计时器并且不在计时器内执行函数?还是只是清除超时并立即执行函数? 这是我的例子 $('input').keyup(function(){
我是一名优秀的程序员,十分优秀!