jQuery UI选项卡禁用选项卡导航

时间:2009-07-11 05:32:03

标签: jquery user-interface tabs

我尝试使用

禁用标签导航
var $tabs = $("#tabs").tabs({
    select: function(event, ui) { return false; }
});

但是,这也会禁用我用于导航的流链接:

$('input.nexttab').click(function() {
    var tab_num = $tabs.tabs('option', 'selected');
    // error check this tab before proceeding
    if ( check_tab(tab_num) ) {
        $tabs.tabs('select', tab_num + 1 );
    }
});

理想情况下,我要禁用当前标签右侧的标签的标签导航,并确保我的<<< prev和next>>标签导航按钮始终有效。

有什么建议吗?

2 个答案:

答案 0 :(得分:9)

您是否尝试将event option设置为不可能触发的内容(如果有的话)?

例如:

$('#tabs').tabs({ event: 'change' });

$('#tabs').tabs({ event: '' }); //probably better

答案 1 :(得分:2)

您应该在第一个闭包上存储一个标志,在传递给$(document).ready的函数中,在单击下一个/上一个按钮时将其设置为true,并在显示选项卡时将其设置为false,这样做,您将只能使用按钮更改标签。

检查this working sample和以下代码段:

$(document).ready(function(){ 
  var allowTabChange = false; 
  var $myTabs = $("#tabs"); 

  $myTabs.tabs({ 
                    select: function(event, ui) { return allowTabChange; }, 
                    show: function(event, ui) { allowTabChange = false; }, 
               }); 

  $('#nextButton').click(function(){offsetTab(1);}); 
  $('#prevButton').click(function(){offsetTab(-1);}); 

  // Helper functions

  function offsetTab(offset){ 
    var tab_num = $myTabs.tabs('option', 'selected'); 
    var nextTab = tab_num + offset; 

    if ( check_tab(nextTab) ) { 
      allowTabChange = true; 
      $myTabs.tabs('select', nextTab); 
    } 
  }

  function check_tab(tab_num){        
    return tab_num >= 0 && tab_num < $myTabs.tabs('length'); 
  } 
});