Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/436.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在鼠标悬停时向jquery事件添加延迟_Javascript_Jquery_Children_Show Hide_Onmouseover - Fatal编程技术网

Javascript 在鼠标悬停时向jquery事件添加延迟

Javascript 在鼠标悬停时向jquery事件添加延迟,javascript,jquery,children,show-hide,onmouseover,Javascript,Jquery,Children,Show Hide,Onmouseover,我试图给一个有困难的孩子的鼠标悬停事件增加一个简单的延迟。(还在学习!) 这使我能够在延迟后显示弹出窗口,但同时显示所有弹出窗口: onmouseover='setTimeout(function() { $(\".skinnyPopup\").show(); }, 600)' 这可以毫不延迟地只显示我想要的弹出窗口: onmouseover='$(this).children(\".skinnyPopup\").show()' 但这种结合并没有: onmouseover='setTimeo

我试图给一个有困难的孩子的鼠标悬停事件增加一个简单的延迟。(还在学习!)

这使我能够在延迟后显示弹出窗口,但同时显示所有弹出窗口:

onmouseover='setTimeout(function() { $(\".skinnyPopup\").show(); }, 600)'
这可以毫不延迟地只显示我想要的弹出窗口:

onmouseover='$(this).children(\".skinnyPopup\").show()'
但这种结合并没有:

onmouseover='setTimeout(function() { $(this).children(\".skinnyPopup\").show(); }, 600)'

任何帮助都将不胜感激。谢谢

这是因为
这个
绑定到全局上下文,而不是元素。改为使用类似以下内容:

// put this in your document head -- replace element with a selector for the elements you want
$(function () {
    $(element).bind("mouseover", function () {
       var e = $(this);
       setTimeout(function () { e.children(".skinnyPopup").show(); }, 600);
    });
});
如果您坚持使用内联事件处理程序,那么以下操作也应该有效:

onmouseover='var self = this; setTimeout(function() { $(self).children(\".skinnyPopup\").show(); }, 600)'

您需要在执行时定义此
是什么,类似于这样的操作:

setTimeout($.proxy(function() { $(this).children(".skinnyPopup").show(); }, this), 600)
或者只是使用,像这样:

$(this).children(".skinnyPopup").delay(600).show(0);
以上两种方法都是快速修复方法,我建议您不要使用内联处理程序,而是检查一个方法(请参阅,以了解一些重要原因),例如:

$(function() {
  $('selector').mouseover(function() {
    $(this).children(".skinnyPopup").delay(600).show(0);
  });
});

+1-我也同意Nick关于移开内联处理程序的观点。谢谢,这有助于我的理解。似乎每件事都变得古怪,如果做内联。不知道为什么,但我知道现在要避免它@TLK-欢迎:)如果它解决了您的问题,请务必接受作为答案,如果不让我知道您仍然有什么问题:)抱歉,有一段时间没有登录,并且没有注意到该选项。(n00b)谢谢!非常感谢。尚未使用bind()。下一步我必须检查一下。