2009-09-12 7 views
0

tout le monde Ahoy,contenu de chargement de problème avec jquery

J'essaie de charger le contenu dans un div en utilisant this tutoriel. J'utilise jquery pour ça. Le problème est que, quand je clique sur le lien

<a href="about.html" class="panel">Profil</a> 

il charge about.html comme une page séparée. Je l'ai essayé avec plusieurs scripts, mais pour une raison quelconque, il ressemble à

$("#content").load 

ne fonctionne pas du tout! Je suis sûr que mon HTML est valide car je l'ai pris près de 1: 1 du tutoriel et seulement modifié les cibles.

heres le javascript complet;

$(document).ready(function() { 

    // Check for hash value in URL 
    var hash = window.location.hash.substr(1); 
    var href = $('#nav li a').each(function(){ 
     var href = $(this).attr('href'); 
     if(hash==href.substr(0,href.length-5)){ 
      var toLoad = hash+'.html #content'; 
      $('#container').load(toLoad) 
     } 

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

    var toLoad = $(this).attr('href')+' #content'; 
    $('#container').hide('fast',loadContent); 
    $('#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 loadContent() { 
     $('#container').load(toLoad,'',showNewContent()) 
    } 
    function showNewContent() { 
     $('#container').show('normal',hideLoader()); 
    } 
    function hideLoader() { 
     $('#load').fadeOut('normal'); 
    } 
    return false; 

    }); 
}); 

Quelles pourraient être les raisons possibles de cela?

+0

Votre syntaxe semble correcte à ce stade, donc cela pourrait être un problème mineur. Exécutez-vous Firebug pour aider au débogage de la communication ajax avec le serveur? - http://getfirebug.com/ –

+0

la console firebug ne signale aucun bogue (avec les paramètres par défaut) – ngmir

+0

Fonctionne-t-il avec FF et non IE? – Mottie

Répondre

3

Vous devez empêcher l'action par défaut du lien:

$("a.loader").click(function(e){ 
    e.preventDefault(); 
    $("#content").load(/* Your details here */); 
}); 
+0

n'a pas non plus d'effet, mais merci pour la réponse rapide – ngmir

0

return false. Laissez jQuery gérer arrêter l'action par défaut:

$(".panel").click(function() 
{ 
    $("#content").load(); 

    return false; 
}); 
+0

j'ai ajouté le javascript complet, et comme vous pouvez le voir, retour faux est inclus - merci – ngmir

0

bien, le problème semble être dans

$('#nav li a').click(function(){ 
    var toLoad = $(this).attr('href')+' #content'; 
    $('#content').hide('fast',loadContent); 
    $('#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 loadContent() { 
     $('#content').load(toLoad,'',showNewContent()) 
    } 
    function showNewContent() { 
     $('#content').show('normal',hideLoader()); 
    } 
    alert("Text"); 
    function hideLoader() { 
     $('#load').fadeOut('normal'); 
    } 
    alert("Text 2"); 
    return false; 
    }); 

parce que toute alerte ("texte") mis là-dedans DonT apparaissent. Est-ce que cela vous aide?

0

Oh, je pense que je vois le problème ...

A partir de cette page tutoriel. Les fichiers index.html, about.html, portfolio.html, contact.html et term.html sont tous des pages dupliquées à l'exception de la partie #content. Donc, votre about.html contient un <div id="content">, ou est-ce juste une page que vous vouliez charger dans la zone de contenu. Si c'est ce dernier, alors je changerais la « #content » à « corps », de:

var toLoad = $(this).attr('href')+' #content'; 

à

var toLoad = $(this).attr('href')+' body'; 
+0

bonne idée, mais il n'a pas d'effet non plus .. – ngmir