2012-01-16 136 views
0

jQuery 1.7.1 - 我想获得先前选定选项卡的索引。例如:如果我从第一个选项移到第三个选项卡,我想将先前选择的选项卡索引设置为0.如何实现此目的?我试过this,但是没有奏效。jQuery选项卡 - 获取之前选定选项卡的索引

我有下面的标记,

<div id="tabs"> 
    <ul> 
     <li><a href="t1" title="content">Gallery</a></li> 
     <li><a href="t2" title="content">Polls</a></li> 
     <li><a href="t3" title="content">Events</a></li> 
    </ul> 
    <div id="content"></div> 
</div> 

的Javascript,

$('#tabs').tabs( { 
    select: function(e, ui) { 
    var t = $(e.target); 
    alert("Index " + t.data('selected.tabs')); 
    return true; 
}}); 
+0

显示一些代码。最好是标记和JavaScript。说明问题的http://jsfiddle.net样本也很棒。 – 2012-01-16 23:28:13

回答

2

通过选择或显示回调开除你只能得到当前选中的标签,用ui.index的时间。你最好的选择是跟踪该索引并在切换标签页时更新它,这会在更新之前告诉你之前的索引。

var previousIndex = 0; 
$('#tabs').tabs( { 
    select: function(e, ui) { 
     //do whatever you need to do with previousIndex 
     alert("The previously selected tab index was " + previousIndex); 
     //track the new index 
     previousIndex = ui.index; 
    } 
}); 
+0

谢谢@Parrots。我遵循你的建议,它的工作原理。我还有一个问题,当我加载页面时,默认情况下我打开一个选项卡。所以我有以下代码$ tabs.tabs('select',); ,但是这不会触发select回调函数。我通过将查询字符串中的索引值赋给'previousIndex'找到了一种解决方法。有没有其他方法来触发回调函数? – SyAu 2012-01-17 00:55:31

+0

不确定,我会假设它会调用回调。最坏的情况我认为你的解决方法是有道理的。 – Parrots 2012-01-17 02:07:30

+0

以下代码也适用,var previousIndex = 0; 。 \t $( '#标签')的选项卡({ \t \t选择:功能(即,UI){选择 \t \t \t VAR = $ tabs.tabs( '选项', '选择'); \t \t \t \t previousIndex = selected; } \t});任何人对此有任何想法? – SyAu 2012-01-18 22:28:35

0

您可以选择使用 $(this).tabs('option', 'selected') :选项

$("#tabs").tabs({ 
     select: function(event, ui){ 
      console.log($(this).tabs('option', 'selected')} 
    )} 
}); 
相关问题