我使用的是一个名为tipTip (http://code.drewwilson.com/entry/tiptip-jquery-plugin)的jquery插件。我正在使用这个电子商务网站,当用户将鼠标悬停在产品图像上时,会出现一个信息框,其中包含有关该产品的额外详细信息。
tipTip的默认行为是,一旦用户将鼠标从链接上移开,悬停框就会消失。您还可以将keepAlive: true设置为要求用户将鼠标移动到悬停框上以使该框消失。这两种情况都不适合我。我在悬停框中有链接,所以用户需要能够进入框而不会消失。但我也不希望用户被要求进入该框以使其消失。移开链接和框应该会让它消失。
为了解决这个问题,我一直在尝试在tipTip javascript中加入一个jquery delay()。我也尝试过使用setTimeout。但我发现,我所能做的就是,在用户移动到另一个链接之前,悬停框一直保持不变。然而,我希望delay()意味着它会在我指定的毫秒数之后消失,而不管用户是否已经移动到另一个链接。
您可以在此处查看完整的tipTip js代码:http://code.google.com/p/geoapps/source/browse/trunk/capstones/talha_khopekar_2012/jquery.tipTip.js?spec=svn108&r=108
我一直在尝试通过修改最后几行来实现延迟。我尝试添加延迟,如下所示:
function deactive_tiptip(){
opts.exit.call(this);
if (timeout){ clearTimeout(timeout); }
tiptip_holder.delay(1000).fadeOut(opts.fadeOut);
}但正如我所说的,这样做的效果是,在用户移动到另一个链接并激活新的悬停框之前,悬停框一直在原地不动。我真的不明白为什么会这样。我的理解是,延迟功能应该简单地将fadeOut延迟1秒,然后fadeOut应该照常进行。
发布于 2012-03-27 06:26:06
当我尝试延迟另一个函数的调用时,我在这个js函数上有一些运气。
window.setTimeout(function(){callFunction(params);}, 4000);如果这有帮助,请告诉我。我和js有一大堆把戏。
致以敬意,
发布于 2012-03-27 06:29:46
因此,您真正想要做的是将工具提示包含在热点区域中,并且仅当用户离开初始项目和工具提示时才停用。
找到调用deactivate_tiptip()函数的“mouseout”事件所在的位置,并为tooltip类添加一个“add”函数。我不知道它的架构,但它可能看起来像这样:
tiptip.mouseOut(function () { deactivate_tiptip(); }; // Original
tiptip.add(".TOOLTIP").mouseOut(function () { deactivate_tiptip(); }; // Ammended
// OR:
tiptip.on("mouseOut", function () { deactivate_tiptip(); }; // Original
tiptip.add(".TOOLTIP").on("mouseOut", function () { deactivate_tiptip(); }; // Ammended您必须将“.TOOLTIP”更改为正确的类。这应该只会在您离开两者时触发停用功能。
https://stackoverflow.com/questions/9880681
复制相似问题