Можете да използвате стила на навигационната лента на jQuery Mobile, но използвайте свой собствен манипулатор на щракване, така че вместо да променяте страници, щракването просто ще скрие/покаже правилното съдържание на същата страница.
HTML
<div data-role="navbar">
<ul>
<li><a href="/bg#" data-href="/bga">One</a></li>
<li><a href="/bg#" data-href="/bgb">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;
}
Ето jsfiddle на горния код: http://jsfiddle.net/3RJuX/
ЗАБЕЛЕЖКА:
- Всяка от връзките в лентата за навигация има атрибут "data-href", зададен на идентификатора на div (или какъвто и да е контейнер, който искате да използвате), който ще бъде показан.
Актуализация
След 1 година се върнах към този отговор и забелязах, че делегираният селектор на манипулатор на събития може да бъде оптимизиран малко, за да използва клас, а не атрибут (което е много по-бързо от търсенето):
$(document).delegate('.ui-navbar a', 'click', function () {
$(this).addClass('ui-btn-active');
$('.content_div').hide();
$('#' + $(this).attr('data-href')).show();
});
Актуализация
Този код може да бъде направен така, че да бъде по-модулен, като се използват относителни селектори, а не абсолютни (като $('.content_div')
, тъй като това ще избере всички съвпадащи елементи в DOM, а не само такива спрямо щракнатия бутон).
//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();
});
Това ви позволява да влагате раздели и/или да имате множество набори от раздели на страници или псевдостраници.
Някои документи за използваните „относителни селектори“:
Ето един пример: http://jsfiddle.net/Cfbjv/25/ (В момента е офлайн )
person
Jasper
schedule
27.07.2011