jQueryUI - 处理“单击”\“选择”已选择选项卡的事件

发布于 2024-11-30 19:37:02 字数 723 浏览 1 评论 0原文

我有一个 jQueryUI 选项卡对象,我想在已选择选项卡时处理单击选项卡的事件。
使用:

$("#tabs").tabs({
    select: function (event, ui) {
        onSelected();
    }
});

我能够在第一次单击(选择)选项卡时处理该事件,但是当我再次单击它时 - 不会调用处理程序。
有什么解决办法吗?


如果没有 - 另一个满足我需求的选项如下:
将选项卡定义为可折叠,并通过脚本折叠它们(而不是通过用户单击)。 我将选项卡对象定义为:

$("#tabs").tabs({
    collapsible: true
});

但是当我尝试使用以下命令模拟单击时:

$("#tabs").tabs("select", 0);

或者

$("#tab-link-0").trigger('click');

什么也没有发生。

我需要指出的是,选项卡是动态添加的,使用:

$("#tabs").tabs("add", "#tab-link-0", "title 0");

对于任何情况有任何想法\建议吗?

谢谢,

I have a jQueryUI tabs object, and i want to handle the event of a tab being clicked, when is already selected.
using:

$("#tabs").tabs({
    select: function (event, ui) {
        onSelected();
    }
});

I'm able to handle the event when the tab is first clicked (selected), but when i click it again - the handler isn't called.
is there any solution for that?


If not - another option that will suit my needs is the following:
define the tabs as collapsible, and collapse them by script (and not by user click).
i define the tabs object as:

$("#tabs").tabs({
    collapsible: true
});

but when i try to simulate a click using:

$("#tabs").tabs("select", 0);

or

$("#tab-link-0").trigger('click');

nothing happens.

I need to point out that the tabs are added dynamically, using:

$("#tabs").tabs("add", "#tab-link-0", "title 0");

any ideas\suggestions for any of the cases?

Thanks,

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

旧人 2024-12-07 19:37:02

我进行了一些实验,发现可以通过在 select 处理程序中调用 event.preventDefault() 来防止选项卡折叠。显然,您只想在当前选定的选项卡上触发 select 处理程序时执行此操作(以防止折叠选项卡),否则您将永远无法切换选项卡。这是值得测试的,因为在 jQuery 事件上调用了 preventDefault(),但它似乎为您提供了您想要的行为,至少在 Chrome 中是这样:

var tabs = $("#tabs").tabs({
   collapsible: true,
   select: function(event, ui) {
      if (tabs.tabs('option', 'selected') === ui.index) {
         // Prevent the tab from collapsing if the event fired on the 
         // currently-selected tab
         event.preventDefault();
      }
      onSelected();
   }
});

I experimented a bit and found out that you can prevent the collapse of a tab by calling event.preventDefault() in the select handler. You obviously only want to do this when the select handler is fired on your currently-selected tab (to prevent collapsing the tab), or you'll never be able to switch the tab. This is worth testing, due to the call to preventDefault() on the jQuery event, but it appears to give you the behavior you want, at least in Chrome:

var tabs = $("#tabs").tabs({
   collapsible: true,
   select: function(event, ui) {
      if (tabs.tabs('option', 'selected') === ui.index) {
         // Prevent the tab from collapsing if the event fired on the 
         // currently-selected tab
         event.preventDefault();
      }
      onSelected();
   }
});
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文