JQuery - можно использовать небольшую помощь с загрузчиком контента - PullRequest
1 голос
/ 18 марта 2010

Я не очень элитен, когда дело касается JavaScript, особенно синтаксиса. Поэтому я пытаюсь учиться. И в этом процессе я пытаюсь реализовать загрузчик контента, который в основном удаляет весь контент из div и вставляет контент из другого div из другого документа.

Я пытался сделать это на этом сайте: www.matkalenderen.no - Проверьте там безобразную ссылку. Посмотрите, что происходит?

Я взял пример с этого сайта: http://nettuts.s3.cdn.plus.org/011_jQuerySite/sample/index.html#index

Но я не уверен, что этот пример действительно работает так, как я думаю. Я имею в виду, если код просто стирает существующее содержимое из div и вставляет содержимое из другого div, почему другие веб-страницы в этом примере включают в себя тип документа, заголовок и т. Д. И т. Д.? Разве вам не нужен div и его содержимое? Без всего остального "вокруг"? Может быть, я не понимаю, как это работает, хотя. Думал, что это работает очень похоже, как включить действительно.

Однако это мой код:

$(document).ready(function() {

    var hash = window.location.hash.substr(1);
    var href = $('#dynloader a').each(function(){
            var href = $(this).attr('href');
            if(hash==href.substr(0,href.length-5)){
                    var toLoad = hash+'.html #container';
                    $('#container').load(toLoad)
            }                                                                                        
    });

    $('#dynloader a').click(function(){

            var toLoad = $(this).attr('href')+' #container';
            $('#container').hide('fast',loadcontainer);
            $('#load').remove();
            $('#wrapper').append('<span id="load">LOADING...</span>');
            $('#load').fadeIn('normal');
            window.location.hash = $(this).attr('href').substr(0,$(this).attr('href').length-5);
            function loadcontainer() {
                    $('#container').load(toLoad,'',showNewcontainer())
            }
            function showNewcontainer() {
                    $('#container').show('normal',hideLoader());
            }
            function hideLoader() {
                    $('#load').fadeOut('normal');
            }
            return false;

    });

});

1 Ответ

2 голосов
/ 18 марта 2010

JQuery .load() имеет некоторые дополнительные функции для поддержки этого.
Вы можете увидеть это в документации здесь (см. «Загрузка фрагментов страницы»)

В вашем примере вот важная часть: hash+'.html #container' пробел перед #container означает, что jQuery будет захватывать этот URL, искать элемент с id="container" и извлекать только содержимое этого элемента, отбрасывая остальную часть страницы. Это позволяет .load() работать более общим образом, без того, что вы выбираете, специально предназначенное только для загрузки ajax.

В вашем случае, я думаю, вам просто нужно удалить #content с конца, если вы не ищете этот элемент. Это не говорит «искать контент», это просто идентификатор, который они использовали для элемента, который хотели найти. Это могло бы быть #divToLoad, что было бы более ясным примером ИМО.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...