2013-02-25 2 views
0

Я разрабатываю некоторую веб-страницу, которая основана на html5. На моей странице я хочу иметь nav и контейнер с выбранным контентом. Но я не хочу перезагружать страницу после нажатия на позицию меню.Как отображать несколько содержимого без перезагрузки?

Сначала Я думал о размещении всего контента на сайте, скрыть некоторые из них и показать после нажатия.

very simple example of this

Но есть много контента, который скрыт, и я не уверен, что это хорошая идея.

Тогда я думаю о включаю в себя контент из .html файлов по яваскрипту и разместил их на сайте, но мое маленькое исследование говорит мне, что это очень плохая практика. Some article.

Также это небольшая и простая страница, и я не хочу использовать какие-либо бэкэнд-технологии.

Итак, мой вопрос: Какая практика?

Любая помощь будет оценена по достоинству.

+0

Я использую .html на своем веб-сайте, поэтому мне не нужно перезагружать данные, каждый раз, когда это просто соответствует .ajax в jquery и действительно полезно – ryanc1256

+0

Iframes может помочь здесь. Не всегда скрывать и показывать div, просто загружая в контейнер. – tymeJV

+0

Вы можете проверить функцию jQuery ['.load'] (http://api.jquery.com/load/). Он специально разработан для вызова сервера и получения дополнительного html, который можно добавить к указанному элементу. – War10ck

ответ

1

Я не уверен, что наилучшим образом есть, но я рекомендую использовать jQuery's .load() вместе с jQuery's .ajaxSetup().

Во-первых, используйте .ajaxSetup(), чтобы вы могли кэшировать будущие запросы ajax.

$.ajaxSetup({ 
    cache: true 
}); 

Затем связать .click() событие, которое использует .load().

Вот код из моего примера ...

HTML:

<ul id="nav"> 
    <li id="first">first</li> 
    <li id="second">second</li> 
    <li id="last">last</li> 
</ul> 
<ul id="contents"> 
    <li id="content1">first</li> 
    <li id="content2">second</li> 
    <li id="content3">last</li> 
</ul> 

JAVASCRIPT:

$(document).ready(function(){ 
    $.ajaxSetup({ 
     cache: true 
    }); 

    $('#nav>li').click(function(){ 
     var url = 7; 
     index = $(this).index(); 
     url += index; 
     $('#content' + (index + 1)).load('http://fiddle.jshell.net/dirtyd77/jUEEd/' + url + '/show/'); 
    }); 
}); 

DEMO: http://jsfiddle.net/dirtyd77/jUEEd/13/

Надеется, что это помогает, и дайте мне узнайте, есть ли у вас какие-либо вопросы!

+0

Чтобы добавить к этому, вы, вероятно, захотите добавить некоторые изменения хештегов или аналогичные (pushState), чтобы вы могли ссылаться + вперед/назад через контент. – Daniel

+0

Согласен. Это было бы хорошей идеей. – Dom

Смежные вопросы