jQuery UI选项卡在鼠标hover时更改选项卡之前强制延迟
使用jQuery UI选项卡1.7.2和jQuery 1.4.2,有没有办法使鼠标hover在选项卡上,在选项卡切换之前有一段延迟?
我一直在研究使用hoverIntent插件来做到这一点,但无法弄清楚它是如何适应的。
现在我的代码看起来像:
var tabs = $('.tabs').tabs({ event: 'mouseover' });
我已经尝试过在show事件中使用回调,但我认为我在回调发生时做错了或不清楚:
$( ".tabs" ).tabs({ show: function(event, ui) { setTimeout("FUNCTION_TO_CHANGE_TAB?", 200); } });
任何帮助将不胜感激。
由于您使用的是1.4.2,因此您可以使用自定义事件和.delegate()
来执行此操作:
$("#tabs").tabs({ event: 'mousedelay' }).delegate('ul.ui-tabs-nav li a', 'mouseover', function() { clearTimeout($(this).closest('.ui-tabs').data('timeout')); $(this).closest('.ui-tabs').data('timeout', setTimeout($.proxy(function() { $(this).trigger('mousedelay'); }, this), 500)); });
你可以在这里试一下
这可以通过设置event
选项来侦听我们的自定义事件mousedelay
。 然后在.delegate()
,我们正在监听锚点上的mouseover
事件,如果有锚点则清除超时(我们快速hover2个标签),然后设置另一个。 当超时结束时,我们正在做的就是在该锚点(选项卡)上触发mousedelay
事件。
$.proxy()
片段只是一个简短的方法,可以this
引用我们moused-over的锚点,而不是window
(因为setTimeout()
在全局上下文中运行)。
您可以创建自己的事件,覆盖鼠标hover并触发新事件。
我在这里发现了一篇关于它的博客文章