Bạn có thể sử dụng thanh điều hướng phong cách jQuery Mobile nhưng sử dụng nhấp xử lý riêng của bạn để thay vì thay đổi trang bấm vào sẽ chỉ ẩn/hiển thị các nội dung thích hợp trên cùng một trang.
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;
}
Đây là một jsfiddle của đoạn code trên: http://jsfiddle.net/3RJuX/
LƯU Ý:
- Mỗi liên kết trong thanh điều hướng có thuộc tính "data-href" được đặt thành id của div (hoặc bất kỳ vùng chứa nào bạn muốn sử dụng) sẽ được hiển thị.
Cập nhật
Sau 1 năm tôi trở lại câu trả lời này và nhận thấy rằng bộ chọn xử lý sự kiện được giao có thể được tối ưu hóa một chút để sử dụng một lớp học chứ không phải là một thuộc tính (đó là nhanh hơn rất nhiều một tra cứu):
$(document).delegate('.ui-navbar a', 'click', function() {
$(this).addClass('ui-btn-active');
$('.content_div').hide();
$('#' + $(this).attr('data-href')).show();
});
cập nhật
mã này có thể được thực hiện cho được Modula hơn r bằng cách sử dụng các bộ chọn tương đối thay vì các bộ chọn tuyệt đối (như $('.content_div')
, vì điều này sẽ chọn tất cả các phần tử phù hợp trong DOM thay vì chỉ các phần tử tương đối so với nút được nhấp).
//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();
});
Điều này cho phép bạn lồng các tab và/hoặc có nhiều bộ tab trên một trang hoặc các trang giả.
Một số tài liệu cho "bộ chọn tương đối" được sử dụng:
Dưới đây là một ví dụ: http://jsfiddle.net/Cfbjv/25/ (ẩn Nó bây giờ)
Cảm ơn cho điều này - có chính xác cùng một vấn đề trước đó chiều nay và đã cố gắng để làm việc đó ra khi tôi tình cờ gặp bài đăng này mà không nghi ngờ gì đã tiết kiệm cho tôi giờ - 1 từ tôi –
@ Jasper, có cơ hội nào bạn đưa tay cho các tab lồng nhau không? Tôi quản lý để có được các tab chính hiển thị nội dung của họ chỉ tốt với '.ui-navbar ul li> a' trên dòng đầu tiên hai dòng nhưng một khi tôi nhấp vào một tab lồng nhau nó" tắt tất cả xuống "do' $ ('. Content_div ') .hide(); '. Cảm ơn. – kevin
@kevin Nếu bạn thiết lập một JSFiddle của mã hiện tại của bạn, tôi sẽ xem xét. – Jasper