好的,我看不到这个。
我正在制作一个可以应用于多个项目的工具提示插件。
当mousedover它们充当工具提示时,我在页面上有多个锚点。我使用变量c_ttip作为div的标识符,因为我不想在其上设置ID。
如果在工具提示mouseout激活删除它的超时之前,如果同一个锚被清除,我希望不要附加工具提示并反复应用类和css。
脚本开发页面,http://kalluna.com/_dev-js.do
var c_ttip = $('<div>'); return this.each(function() { $(this).mouseover(function() { c_ttip.appendTo(document.body).hide(); c_ttip.html('inside my tooltip').addClass('c_ttip_box').css({'top' : obj.position().top + 20, 'left' : obj.position().left}).show(); }).mouseout(function() { timer = setTimeout(function() { c_ttip.fadeOut(200, function() { c_ttip.remove();}); }, 2000); }); });
答案 0 :(得分:2)
您可以存储触发工具提示的对象,并在添加div之前验证对象是否不同。类似的东西:
var c_ttip = $('<div>');
var currobject;
...
$(this).mouseover(function() {
if(this == currobject) return;
currobject = this;
...
答案 1 :(得分:1)
您需要某种形式的互斥/标记/信号量来表示您当前处于超时/淡出状态,并且mouseover()
事件不应该触发。
您为超时ID创建的计时器变量可用于此目的。将上面的内容创建为变量(最初为false
),就像您对c_ttip
一样。然后在false
回调中将其设置为fadeOut()
。 mouseover()
例程应检查timer != false
何时启动,如果是{。}则立即退出。
或者,您可以在计时器处于活动状态时向工具提示添加一个类,并在淡入淡出完成时将其删除。