2012-01-31 13 views
7

Ho esattamente lo stesso problema descritto qui: http://bugs.jqueryui.com/ticket/7930. Il problema è che il maintainer non può riprodurlo, quindi il ticket è chiuso. Il mio codice è come segue:Preselezione della scheda abilitata ajax nelle schede dell'interfaccia utente jquery

<script type="text/javascript"> 
    $(document).ready(function() { 
     // assigns the value of a GET parameter called tab to tabIndex 
     var tabIndex = getUrlVars()['tab']; 

     if (isNaN(tabIndex)) { 
      tabIndex = 0; 
     } 

     // initializes tabs and selects the one provided in tabIndex (default: 0) 
     $('div#tabs').tabs({ ajaxOptions: { cache: false}, selected: tabIndex }); 
    }); 
</script> 
<div id="tabs"> 
    <ul> 
     <li>@Html.ActionLink("User roles", "Roles", "Admin", New With {.rand = DateTime.Now.Ticks}, Nothing)</li> 
     <li>@Html.ActionLink("Report templates", "Reports", "Admin", New With {.rand = DateTime.Now.Ticks}, Nothing)</li> 
     <li>@Html.ActionLink("Blabla", "2", "Admin")</li> 
     <li>@Html.ActionLink("Blabla2", "3", "Admin")</li> 
    </ul> 
</div> 

Questo crea le schede con id: # ui-tabs-1, # ui-tabs-2, # ui-tabs-3, # ui-tabs-4. Accedo alla pagina tramite l'url: http://server/Admin?tab=1. La scheda appropriata è selezionata (la seconda con i report), ma la chiamata ajax viene eseguita nella href di una scheda precedente (ruoli utente). Ne risulta un contenuto della scheda vuoto che viene mostrato. Sai come aggiustarlo?

+0

è possibile aggiungere il codice responsabile della chiamata ajax? – Rafay

+0

Viene eseguito automaticamente dalle schede dell'interfaccia utente. Se fornisco un elemento nell'elenco UL, esso prende gli hrefs e fa automaticamente chiamate ajax quando si cambiano le schede. Non è necessario scrivere il codice per ottenere questa funzionalità. –

+0

Stai utilizzando la versione più recente di jquery ui (1.8.17)? –

risposta

5

ho usato:

$('#tabs').tabs({ selected: tabIndex });

Ma tabIndex era una stringa (ottengo da URL o URL hash), quindi si è tradotto in esempio:

$('#tabs').tabs({ selected: "2" });

In questo caso puoi osservare un comportamento così inaspettato.
chiamando la funzione Numero sul tabIndex

tabIndex = Number(tabIndex)

risolve il problema.

Problemi correlati