我在以编程方式选择选项卡时遇到了一些问题。我的选项卡加载在 Fancybox 对话框窗口中,该窗口在单击链接时启动。基本上,我想在选择选项卡时执行某些操作,并在单击链接时选择特定选项卡。
我正在使用如下select
事件初始化 jQuery UI 选项卡:
$('#tabs').tabs({
select: function(event, ui) {
// edit: here is the issue
var activePanel = '.ui-tabs-panel:visible ';
// grab value of a form input
var text = $(activePanel + 'someElement').val();
// check its length
if ( text.length > 0 ) {
// do stuff
}
}
})
稍后在我的 JS 文件中,我有以下内容:
$(document).on('click', 'a.edit', function() {
if($category == 'book') {
// load the tab specific to the 'book' category
$('#tabs').tabs({ selected: 3 });
}
})
当我单击a.edit
“书”类别中某个项目的链接时,我的控制台会抛出此错误:
Uncaught TypeError: Cannot read property 'length' of undefined
然后,没有在 Fancybox 中加载选项卡,没有任何反应。当我单击不在图书类别中的项目的链接时,不会引发此错误。因此,有两件事非常明显:
- 我是n00b
- 我的
select
事件显然被点击事件覆盖,所以text
没有设置
我尝试text
在我的 JS 文件顶部设置默认值,但这不起作用。那么,我的问题是:
使用选择事件初始化 UI 选项卡的正确方法是什么,同时还能够通过单击事件以编程方式选择选项卡?
或者,更简洁地说,
为什么我得到那个该死的错误?
编辑:我修改了上面的第一个代码块,以包含我发现与我的问题相关的代码。请参阅下面的答案以获得更全面的解释。