jQueryUI - 处理“单击”\“选择”已选择选项卡的事件
我有一个 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我进行了一些实验,发现可以通过在
select
处理程序中调用event.preventDefault()
来防止选项卡折叠。显然,您只想在当前选定的选项卡上触发select
处理程序时执行此操作(以防止折叠选项卡),否则您将永远无法切换选项卡。这是值得测试的,因为在 jQuery 事件上调用了preventDefault()
,但它似乎为您提供了您想要的行为,至少在 Chrome 中是这样:I experimented a bit and found out that you can prevent the collapse of a tab by calling
event.preventDefault()
in theselect
handler. You obviously only want to do this when theselect
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 topreventDefault()
on the jQuery event, but it appears to give you the behavior you want, at least in Chrome: