JQuery隐藏优先于显示?
我对JQuery显示和隐藏有问题。当我将鼠标悬停在一个元素上时,我想显示右边弹出的另一个元素。我已通过以下代码管理了该问题:JQuery隐藏优先于显示?,jquery,Jquery,我对JQuery显示和隐藏有问题。当我将鼠标悬停在一个元素上时,我想显示右边弹出的另一个元素。我已通过以下代码管理了该问题: var actionHoverInListener = function () { $(this).children('.pop-out').show("slide", { direction:"left" }, 100); }; var actionHoverOutListener = function () { $(this).children('.p
var actionHoverInListener = function () {
$(this).children('.pop-out').show("slide", { direction:"left" }, 100);
};
var actionHoverOutListener = function () {
$(this).children('.pop-out').hide("slide", { direction:"left" }, 100);
};
// Add a hover listener for actions
$(".magic").hover(
actionHoverInListener, actionHoverOutListener
);
这很好,但问题是速度。如果我在“魔法”分区上悬停太快,它永远不会隐藏弹出窗口。这就好像隐藏调用被忽略,因为该节目仍在为幻灯片设置动画
正确调用了hover out方法:我已经输入了日志代码,以确保它被调用。因此,问题是隐藏不会取消显示。有办法做到这一点吗
谢谢
更新:
我在jfiddle上包含了一个问题示例:
把鼠标放在红色条纹上。您将看到绿色滑出,但如果速度太快(即使使用stop()调用),则不会滑回。更改为
$(this).children('.pop-out').stop().hide(...
这将停止显示动画并立即隐藏
编辑:不太清楚原因,但是.stop
对这样的孩子们玩得不好。无论出于何种原因,使用不同的选择器语法似乎都能使其正常工作
此外,由于动画被暂停,左
CSS可能会变为负数,因此我在.hide
上添加了一个回调,以在动画完成后将其设置为0
您可以研究一下如何使用–我以前就已经解决了类似的问题
摆弄你的小提琴和你的意图让我想到:
如果我这么说的话,效果相当不错。我刚刚更改了脚本以适应插件,如下所示:
var config = {
over: actionHoverInListener, // function = onMouseOver callback (REQUIRED)
timeout: 1000, // number = milliseconds delay before onMouseOut
out: actionHoverOutListener // function = onMouseOut callback (REQUIRED)
})
不幸的是,这对我不起作用。我在jsfiddle.net上放了一些东西来说明这个问题。我添加了一个jsfiddle示例(带有stop()),但仍然不起作用。如果您还有其他建议,我将不胜感激!感谢您-更改选择器而不使用.children()使其工作完美。谢谢你的帮助!
// Add a hover listener for actions
$('.monkey').hoverIntent(
config
);