Проблема загрузчика страниц в jQuery - PullRequest
0 голосов
/ 05 июня 2011

Я использую следующий код для динамической загрузки страниц с помощью jQuery.Загрузка страницы работает, но когда вы нажимаете навигационную ссылку для загрузки новой страницы, старая страница мигает на экране, как будто она снова загружает предыдущую страницу.Нажмите на навигационную ссылку «Контакт» и посмотрите, что я имею в виду: http://ghostpool.com/wordpress/buzz. Почему это происходит?

jQuery (документ) .ready (function () {

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

jQuery('#nav li a').click(function(){

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

});

});

1 Ответ

0 голосов
/ 05 июня 2011

Поведение по умолчанию все еще работает. Вы должны отключить его одним из следующих способов:

jQuery('#nav li a').click(function(e){

e.preventDefault();

// or 

return false;// at the end of the function
}

EDIT:

После перечитывания кода я вижу здесь необычные вещи с вашими функциями:

function loadContent() {
    jQuery('#content').load(toLoad,'',showNewContent())
}
function showNewContent() {
    jQuery('#content').show('normal',hideLoader());
}

вместо передачи функций обратного вызова вы передаете возвращаемое значение. вот как это должно быть

jQuery('#content').load(toLoad,'',showNewContent);
...
jQuery('#content').show('normal',hideLoader);

скобки не удаляются

...