2012-01-31 22 views
7

Tengo exactamente el mismo problema que el descrito aquí: http://bugs.jqueryui.com/ticket/7930. El problema es que el mantenedor no puede reproducirlo, por lo que el ticket está cerrado. Mi código es la siguiente:Preselección de la pestaña habilitada para Ajax en las pestañas de la IU de 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> 

Esto crea pestañas con la ID: # ui-tabs-1, # ui-tabs-2, # ui-tabs-3, # ui-tabs-4. Accedo a la página a través de la url: http://server/Admin?tab=1. Se selecciona la pestaña apropiada (la segunda con informes), pero la llamada ajax se realiza al href de una pestaña anterior (roles de usuario). Resulta en que se muestre un contenido de pestaña vacía. ¿Sabes cómo solucionarlo?

+0

¿Puedes agregar el código responsable de la llamada ajax? – Rafay

+0

Se realiza automáticamente mediante las pestañas de la IU. Si proporciono elementos en la lista UL, entonces toma los hrefs y hace llamadas ajax automáticamente al cambiar las pestañas. No necesita escribir su código para lograr esta funcionalidad. –

+0

¿Está utilizando la última versión de jquery ui (1.8.17)? –

Respuesta

5

utilicé:

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

Pero tabIndex era una cadena (lo obtengo de URL o de hash url), lo que dio como resultado, por ejemplo:

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

En este caso puedes observar tal comportamiento inesperado. La función del número
pidiendo a tabIndex

tabIndex = Number(tabIndex)

resuelve el problema.

Cuestiones relacionadas