坚持我,我正在处理预先存在的代码,并试图不必检修代码。
我正在处理一个过渡弹出菜单,该菜单需要500ms的延迟才能弹出。如此疯狂的CSS骇客:
#nav ul li ul {
left: -9999999px;
}
#nav ul :hover ul {
left: auto;
}
<div id="nav">
<ul>
<li>Link here</li>
<ul>Some popup content</ul>
</ul>
</div>
所以我取消了“ #nav ul:hover ul” CSS定义,并在jQuery中编写了一个基本的单行代码
$("#nav ul li").live("mouseover", function () {$(this).children("ul").css("left", "auto"); return false})
本质上,它模仿原始代码,但现在由JS控制
因此,从逻辑上讲,为了增加延迟,我开始弄乱setTimeout
$("#nav ul li").live("mouseover", function () {setTimeout(function() {$(this).children("ul").css("left", "auto");} return false}, 500))
另外,还有许多其他组合。通过setTimeout发送$(this)似乎很麻烦。我尝试研究.delay(),但它似乎仅对效果队列有用,而且我不确定如何将效果队列集成到其中以使一切看起来都很好。因此,任何帮助将不胜感激
最佳答案
看到这个jsfiddle。
http://jsfiddle.net/wHBK8/1/
我必须使用display:而不是jsfiddle的left方法,因为它不会应用left方法。
另外,您的内部ul不在css中指定的li内。
这是将鼠标悬停中所引用的方法传递给setTimeout的方法。
$("#nav ul li").live("mouseover", function () {
var that= $(this);
setTimeout(function() {that.children("ul").show();}, 5000);
return false;
});
关于jquery - jQuery延迟是否无效?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7475186/