11548 sujets

JavaScript, DOM et API Web HTML5

Bonjour,
J'utilise jQuery depuis peu.
J'aimerai faire une navigation ajax j'utilise donc load() en ne chargeant qu'un <div>
Mais çà bug.

http://patisserie.guillaumedesbieys.com/
Quand on clique sur un des liens dans le header le menu qui appartient à #menu est de nouveau chargé dans #corp
Alors que avec load() je ne demande à afficher que #corp


function afficher(page){
	$("#corp").load(page+"#corp");
}


$(function(){
	$("#menu a").click(function(){
		afficher($(this).attr("href"));
		return false;
	});			
});


D'où cela peut venir ?

Merci
Bonjour

"Load" charge en principe tout le contenu de ta variable "page" et ne tient pas compte de l'ancre pour dire qu'il va charger uniquement que cette partie. Il faut donc que l'URL appelée ne contienne que ce que tu as à afficher.

Je pense que ton soucis vient de là.
Bonjour

Ne manque t il pas un blanc avant #corp ? page + " #corp"

extrait de la page http://api.jquery.com/load/ :

Loading Page Fragments

The .load() method, unlike $.get(), allows us to specify a portion of the remote document to be inserted. This is achieved with a special syntax for the url parameter. If one or more space characters are included in the string, the portion of the string following the first space is assumed to be a jQuery selector that determines the content to be loaded.

We could modify the example above to use only part of the document that is fetched:

$('#result').load('ajax/test.html #container');

When this method executes, it retrieves the content of ajax/test.html, but then jQuery parses the returned document to find the element with an ID of container. This element, along with its contents, is inserted into the element with an ID of result, and the rest of the retrieved document is discarded.

Note that the document retrieved cannot be a full HTML document; that is, it cannot include (for example) <html>, <title>, or <head> elements. jQuery uses the browser's innerHTML property on a <div> element to parse the document, and most browsers will not allow non-body elements to be parsed in this way.
Si mais je l'avais ajouté entre temps.
Mais il y à toujours un probléme.
Sur la page d'accueil il y a un #corp et quand on clique sur un lien sa demande via load() de récupérer le #corp de cette autre page et l'injecter dans #corp
Mais çà devient :
<div id="corp">
<div id="corp">
CONTENT
</div>
</div>
Au lieu de :
<div id="corp">
CONTENT
</div>
Je bloque à nouveau.
Si j'utilise replaceWidth il faudrait que çà récupère seulement la balise #corp avant.
guitoun3 a écrit :
Si j'utilise replaceWidth il faudrait que çà récupère seulement la balise #corp avant.

Tu n'avais pas réglé ce problème deux messages plus tôt?
Tu récupérais l'élément <div id="corps">...Z...</div> de la page distante, et tu l'insérais comme contenu du <div id="corps">...A...</div> dans la page en cours, ce qui te donnait: <div id="corps"><div id="corps">...Z...</div></div>.
Pour info, il y a un s à «corps» en français, y compris au singulier. Sauf si tu voulais utiliser le mot anglais «corp», qui est une abbréviation pour «corporation». Smiley cligne
Modifié par Florent V. (22 Apr 2010 - 14:14)
Pour l'orthographe je m'en fous un peu car c'est juste pour le nom de la balise, pour les textes après en général j'essaye de faire attention.

Oui avant j'arrivai à injecter #corp mais via la fonction load() mais je ne sais pas comment récupérer ce contenu pour le mettre dans une variable.
Modifié par guitoun3 (22 Apr 2010 - 14:38)