最近我一直在考虑使用这个脚本打开一个标签:
$('.tofour').click(function() { // bind click event to link
$tabs.tabs('select', 3); // switch to third tab
return false;
});
但是我的具体问题是我正在处理的网站并不总是加载相同的标签集。选项卡可以根据是否存在某些信息而更改。例如:
在某些情况下,我们会有足够的数据:
- 产品数据(#overview)
- 规格(#specs)
- 配件(#accessories)
- 服务(#services)
- 客户评论(#reviews)
醇>
在其他情况下,只有足够的数据来填充两个标签
- 产品数据(#overview)
- 配件(#accessories)
醇>
你可以想象这会产生一个问题,因为标签号可以改变;规范选项卡(#specs
)可能是第二个选项卡,也可能是第一个选项卡(如果产品数据不存在),或者“规格”选项卡可能根本不存在。
因此,为了争论,我想说我希望定位规格标签。我想首先要检查div id #specs
是否存在。然后我想我必须创建一个目标链接。但是我可以定位id而不是标签号,就像通常的例子(上面)一样吗?
任何人都可以帮忙吗?我的jQuery技能是,我很惭愧承认,非常差。
我提前感谢你。
答案 0 :(得分:2)
您可以通过此代码获取索引,然后检查它是否为-1(表示它不存在)
注意:这假定标签的a标签的ID为规格
var index = $('#tabs a').index($('#specs'));
if (index > -1) {
$('#tabs').tabs('select', index);
}
答案 1 :(得分:1)
$("#m").live('click',function(){
$('#tabs').tabs({ selected: "#tabs-1" });
});
试试这个。让我进一步了解。
答案 2 :(得分:1)
创建一个javascript数组,其中包含tab id作为键,tab选项卡索引为值:
// if you're using php and the tabs that need to be generated are in a variable called $tabs
// you could work this out in other languages
$count = count($tabs);
for($i=0;$i<=$count;$i++){
$tab = $tabs[$i];
echo 'tab_indexes[' . $tab['id'] . '] = ' . $i . ';'; // id as in #specs, etc
}
然后在jQuery中使用数组:
$('#to_specs').click(function() { // bind click event to link
$('#tabs').tabs('select', tab_indexes['#specs']); // switch to specs tab
return false;
});
答案 3 :(得分:1)
这应该适用于该场景
您可以将element.id.match('specs')
替换为您想要的条件
$('.tofour').click(function(evt) {
$('#tabs a').each(function(index,element){
if(index != -1 && element.id.match('specs')){
$('#tabs').tabs('select', index);
return false;
}
});
});