坚持我,我正在处理预先存在的代码,并试图不必对代码进行大修。
我正在处理翻转弹出菜单,弹出窗口需要500毫秒的延迟。完成疯狂的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(),但它似乎只对效果队列有好处,而且我不确定如何将效果队列集成到这里以使一切看起来都很好。所以任何帮助将不胜感激
答案 0 :(得分:1)
为什么不使用.hoverIntent()?
答案 1 :(得分:1)
见这个jsfiddle。
我不得不使用display:none代替jsfiddle的左方法,因为它不适用于左边。
此外,您的内部ul不在css中指定的li中。
以下是将鼠标悬停时引用的方法传递给setTimeout。
$("#nav ul li").live("mouseover", function () {
var that= $(this);
setTimeout(function() {that.children("ul").show();}, 5000);
return false;
});