jQuery UI选项卡:从链接定位动态选项卡

时间:2012-03-29 13:47:01

标签: javascript jquery dynamic hyperlink tabs

最近我一直在考虑使用这个脚本打开一个标签:

$('.tofour').click(function() { // bind click event to link
    $tabs.tabs('select', 3); // switch to third tab
    return false;
});

但是我的具体问题是我正在处理的网站并不总是加载相同的标签集。选项卡可以根据是否存在某些信息而更改。例如:

在某些情况下,我们会有足够的数据:

  
      
  1. 产品数据(#overview)
  2.   
  3. 规格(#specs)
  4.   
  5. 配件(#accessories)
  6.   
  7. 服务(#services)
  8.   
  9. 客户评论(#reviews)
  10.   

在其他情况下,只有足够的数据来填充两个标签

  
      
  1. 产品数据(#overview)
  2.   
  3. 配件(#accessories)
  4.   

你可以想象这会产生一个问题,因为标签号可以改变;规范选项卡(#specs)可能是第二个选项卡,也可能是第一个选项卡(如果产品数据不存在),或者“规格”选项卡可能根本不存在。

因此,为了争论,我想说我希望定位规格标签。我想首先要检查div id #specs是否存在。然后我想我必须创建一个目标链接。但是我可以定位id而不是标签号,就像通常的例子(上面)一样吗?

任何人都可以帮忙吗?我的jQuery技能是,我很惭愧承认,非常差。

我提前感谢你。

4 个答案:

答案 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;
     }
   });
});