Tengo una página que contiene un conjunto de pestañas jQuery. Todas las pestañas apuntan al mismo objetivo div, pero lo cargan con contenido diferente a través de ajax. Cuando realizo la carga inicial de la página completa, debo configurar la pestaña activa de manera diferente según diversos factores. El contenido en el div de destino ya está configurado en el servidor para esta carga inicial, por lo que no es necesario que haga clic en la pestaña, solo tengo que configurar la pestaña correcta en 'seleccionado'. He intentado configurar la clase del elemento html "li" relevante en "ui-tabulaciones-seleccionadas". Esto tiene el efecto inicial deseado, pero una vez que se carga la página, al seleccionar otra pestaña, la preseleccionada no se apaga, dejando dos pestañas seleccionadas.Pestañas jQuery seleccionando la pestaña específica
Entonces, ¿alguien sabe una forma alternativa de preseleccionar una pestaña (sin hacer clic), o una solución al extraño comportamiento "ui-tabulaciones-seleccionadas" que estoy viendo.
Gracias.
<script type="text/javascript">
$(function() {
$("#panelTabs").tabs({
ajaxOptions: {
error: function(xhr, status, index, anchor) {
$(anchor.hash).html("Couldn't load this tab. We'll try to fix this as soon as possible.");
}
}
});
$("#panelTabs").tabs({
select: function(event, ui) {
getPage('hps.aspx?cmd=zz_' + ui.tab.id, 'panelA');
}
});
});
</script>
Y el # fragmento C que construye el UL:
StringBuilder tabsLiteral = new StringBuilder();
tabsLiteral.Append("<ul>");
foreach (KeyValuePair<string, Tab> kvp in tabs)
{
tabsLiteral.Append("<li>");
// Note - the kvp.Value.URI determines what should happen when the Tab is clicked
tabsLiteral.Append("<a id=\"" + kvp.Value.URI + "\" href=\"#panelTabs\">" + kvp.Value.Caption + "</a>");
tabsLiteral.Append("</li>");
}
tabsLiteral.Append("</ul>");
_panelTabs.Controls.Add(new LiteralControl(tabsLiteral.ToString()));
HtmlGenericControl ctl = new HtmlGenericControl();
StringBuilder html = new StringBuilder();
html.Append("<script type=\"text/javascript\">");
html.Append("$(\"#panelTabs\").tabs({selected: 2});");
html.Append("</script>");
ctl.InnerHtml = html.ToString();
_panelTabs.Controls.Add(ctl);
Otra versión:
StringBuilder tabsLiteral = new StringBuilder();
tabsLiteral.Append("<ul>");
foreach (KeyValuePair<string, Tab> kvp in tabs)
{
string active = "";
if (currentTabCaption == kvp.Value.Caption)
{
//active = " class=\"ui-tabs-selected\"";
}
tabsLiteral.Append("<li" + active + ">");
// Note - the kvp.Value.URI determines what should happen when the Tab is clicked
tabsLiteral.Append("<a id=\"" + kvp.Value.URI + "\" href=\"#panelTabs\">" + kvp.Value.Caption + "</a>");
tabsLiteral.Append("</li>");
}
tabsLiteral.Append("</ul>");
_panelTabs.Controls.Add(new LiteralControl(tabsLiteral.ToString()));
HtmlGenericControl ctl = new HtmlGenericControl();
StringBuilder html = new StringBuilder();
html.Append("<script type=\"text/javascript\">");
//html.Append("$(\"#panelTabs\").tabs('option','selected', 2);");
html.Append(@"$(function() {
alert('initialising tabs');
$(""#panelTabs"").tabs({
ajaxOptions: {
error: function(xhr, status, index, anchor) {
$(anchor.hash).html(""Couldn't load this tab. We'll try to fix this as soon as possible."");
}
},
select: function(event, ui) {
getPage('hps.aspx?cmd=zz_' + ui.tab.id, 'panelA');
}
});
});");
html.Append("$(\"#panelTabs\").tabs({selected: 2});");
html.Append("</script>");
ctl.InnerHtml = html.ToString();
//_panelTabs.Controls.Add(ctl);
Page.Controls.Add(ctl);
¿tiene usted un ejemplo de código que muestra esto en acción? – spinon
Tenga en cuenta que si esto es lo que está buscando, pero aquí está el fragmento C# que construye el li: if (currentTabCaption == kvp.Value.Caption) {active = "class = \" ui-tabs-selected \ " "; } tabsLiteral.Append ("