2012-03-26 89 views
0

我使用所谓tipTip一个jQuery插件(http://code.drewwilson.com/entry/tiptip-jquery-plugin)。我将此用于电子商务网站,当用户将鼠标悬停在产品图像上时,会出现一个信息框,其中包含有关该产品的额外详细信息。延迟一个jQuery淡出

tipTip的默认行为是,一旦用户将其鼠标从链接悬停框消失。您还可以设置keepAlive:true以要求用户将鼠标移动到悬停框上以使框消失。这两种情况都不适合我。我在悬停框中有链接,因此用户需要能够在不消失的情况下输入框。但是我也不希望用户被要求输入框以使其消失。关闭链接和框应使其消失。

为了解决这个问题,我一直试图把一个jQuery延迟()到tipTip的JavaScript。我也尝试过使用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); 
          } 

但正如我所说,这样做的效果是,悬停框保持在原位,直至用户移动到另一条链路,并激活新的悬停框。我真的不明白这是为什么。我的理解是,延迟功能应该简单地延迟1秒,然后fadeOut应该照常进行。

回答

1

当我试图延迟另一个函数的调用时,我对这个js函数有一些好运。

window.setTimeout(function(){callFunction(params);}, 4000); 

让我知道这是否有帮助。我有一袋js的技巧。

问候,

+0

我试过,但它有,当我试图延迟同样的效果 - 这意味着悬停盒依然是直到我移动到另一个链接 – Andrew 2012-03-26 23:26:27

1

让您真正想要做的是包括在热点区域的工具提示和仅停用当/如果用户离开了初始项目和工具提示。

寻找到“鼠标移出”事件调用deactivate_tiptip()函数存在,并添加“添加”功能的工具提示类。我不知道架构,但它可能看起来像这样:

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'更改为正确的类。只有当你离开时,这应该会触发停用功能。

+0

嗨 - 感谢您的回复。没有鼠标事件。其中停用叫位是在这里:org_elem.hover(函数(){ active_tiptip();} ,函数(){ 如果(opts.keepAlive){ deactive_tiptip();} !}); 所以我不知道如何使用你建议的方法 – Andrew 2012-03-26 23:25:30

+0

嗨Andrew,'.hover()'是一个jQuery函数。尝试在org_elem之后插入'.add(“。TOOLTIP”)' – 2012-03-27 03:02:34