2009-07-11 38 views
7

he intentado desactivar la barra de navegación utilizandopestañas jQuery UI desactivar la pestaña de navegación

var $tabs = $("#tabs").tabs({ 
    select: function(event, ui) { return false; } 
}); 

Sin embargo, esto también desactiva los enlaces de flujo que estoy usando para la navegación:

$('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); 
    } 
}); 

Idealmente, me Quiero deshabilitar la navegación de pestañas para pestañas a la derecha de la pestaña actual y asegurar que mis botones de navegación de pestaña < < previos y siguientes > > siempre funcionen.

¿Alguna sugerencia?

Respuesta

2

Debe almacenar una marca en el primer cierre, en la función que pasa al $(document).ready, establecerla como verdadera cuando se hace clic en sus botones siguiente/anterior, y volver a establecerlo en falso cuando se muestra la pestaña, haciendo eso, solo podrá cambiar la pestaña utilizando los botones.

Comprobar this working sample y el código siguiente fragmento:

$(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'); 
    } 
}); 
+1

Hmmmm, parece un poco desordenado - Tenía la esperanza de que hay sería un chiste para añadir/quitar el controlador de eventos desde las pestañas fácilmente. Podría vivir con todas las pestañas desactivadas siempre que los enlaces prev/next funcionen (para simplificar la lógica). Use un selector en los elementos de clase .ui-tabs-nav y elimine el evento click? Funcionaría eso? – cliveholloway

8

Ha intentado establecer el event option a algo que no es probable que sea despedido (en su caso)?

Por ejemplo:

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

o

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

+1 configurarlo para cambiar funciona bien, pero no está vacío. Las probabilidades son que el control de pestañas no activará un cambio de todos modos. – jfrobishow

Cuestiones relacionadas