Puede utilizar la barra de navegación estilo jQuery Mobile, pero utilizar su propio controlador de clic-así que en vez de páginas que cambian el clic se acaba de ocultar/mostrar el contenido adecuado en la misma página.
HTML
<div data-role="navbar">
<ul>
<li><a href="#" data-href="a">One</a></li>
<li><a href="#" data-href="b">Two</a></li>
</ul>
</div><!-- /navbar -->
<div class="content_div">onLoad Content</div>
<div id="a" class="content_div">Some 'A' Content</div>
<div id="b" class="content_div">Some 'B' Content</div>
JavaScript
$(document).delegate('[data-role="navbar"] a', 'click', function() {
$(this).addClass('ui-btn-active');
$('.content_div').hide();
$('#' + $(this).attr('data-href')).show();
return false;//stop default behavior of link
});
CSS
.content_div {
display: none;
}
.content_div:first-child {
display: block;
}
Aquí es una jsFiddle del código anterior: http://jsfiddle.net/3RJuX/
NOTA:
- Cada uno de los enlaces en la barra de navegación tiene un atributo "data-href" establecido en el id del div (o el contenedor que desee utilizar) que se mostrará.
actualización
Después de 1 año regresé a esta respuesta y se dio cuenta de que el selector de control de eventos delegado se puede optimizar un poco para utilizar una clase en lugar de un atributo (lo cual es mucho más rápido de una búsqueda):
$(document).delegate('.ui-navbar a', 'click', function() {
$(this).addClass('ui-btn-active');
$('.content_div').hide();
$('#' + $(this).attr('data-href')).show();
});
actualización
Este código se puede hacer para ser más modula r mediante el uso de selectores relativos en lugar de los absolutos (como $('.content_div')
, ya que esto seleccionará todos los elementos coincidentes en el DOM en lugar de solo los relativos al botón en el que se hizo clic).
//same selector here
$(document).delegate('.ui-navbar ul li > a', 'click', function() {
//un-highlight and highlight only the buttons in the same navbar widget
$(this).closest('.ui-navbar').find('a').removeClass('ui-navbar-btn-active');
//this bit is the same, you could chain it off of the last call by using two `.end()`s
$(this).addClass('ui-navbar-btn-active');
//this starts the same but then only selects the sibling `.content_div` elements to hide rather than all in the DOM
$('#' + $(this).attr('data-href')).show().siblings('.content_div').hide();
});
Esto le permite a las lengüetas de nidos y/o tener varios conjuntos de pestañas en un pseudo-páginas o páginas.
Parte de la documentación para los "selectores relativos" utilizados:
Aquí era un ejemplo: http://jsfiddle.net/Cfbjv/25/ (Es offline)
Gracias a este - tenía exactamente el mismo problema a principios de esta tarde y estaba tratando de trabajar cuando me encontré con esta publicación que sin duda me ha ahorrado horas - +1 de mí –
@Jasper, ¿hay alguna posibilidad de que le des una mano a las pestañas anidadas? Logré obtener las pestañas principales mostrando su contenido con '.ui-navbar ul li> a' en las dos primeras líneas, pero una vez que hago clic en una pestaña anidada" se cierra todo "debido al' $ ('. Content_div ') .hide(); '. Gracias. – kevin
@kevin Si configura un JSFiddle de su código actual lo echaré un vistazo. – Jasper