jQuery UI 选项卡在鼠标悬停时更改选项卡之前强制延迟

标签 jquery jquery-ui

将 jQuery UI Tabs 1.7.2 与 jQuery 1.4.2 一起使用,有没有办法使当您将鼠标悬停在选项卡上时,在选项卡切换之前有一个延迟?

我一直在考虑使用hoverIntent插件可以做到这一点,但无法弄清楚它如何适应。

现在我的代码如下所示:

var tabs = $('.tabs').tabs({
 event: 'mouseover'
});

我尝试过在演出事件中使用回调,但我认为我做错了或者不清楚回调何时发生:

$( ".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));
});​​​​​​​​​​​​​​​

You can try a demo here

这可以通过设置 event option 来实现。监听我们的自定义事件,mousedelay。然后在 .delegate() ,我们正在监听 anchor 上的 mouseover 事件,如果有超时则清除超时(我们快速将鼠标悬停在 2 个选项卡上),然后设置另一个。当超时结束时,我们要做的就是触发该 anchor (选项卡)上的 mousedelay 事件。

$.proxy() piece 只是在执行时让 this 引用我们鼠标悬停的 anchor 的一种简短方法,而不是 window (因为 setTimeout() 在全局上下文中运行)。

关于jQuery UI 选项卡在鼠标悬停时更改选项卡之前强制延迟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2495846/

相关文章:

javascript - 在拖放 FileReader 时获取文件名

javascript - jquery 悬停类更改无法正常工作

jQuery Draggable,可以使用左侧吗?

javascript - 如何验证 jQuery UI 日期选择器 "From Date"到 "To Date"

javascript - 像 Google 一样排序和添加输入 - 获取路线

jquery - 在两行之间的 div 内插入表格

javascript - 在 Angularjs 中使用按键调用函数

jQuery-ui:启用禁用按钮不会恢复事件

javascript - 将 setDate 与 jQueryUi 日期选择器一起使用

javascript - Jquery/css 在悬停时显示图像