Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > JavaScript > Bibliothèques & Frameworks > jQuery
jQuery Forum d'entraide sur le framework jQuery. Avant de poster : Tutoriels jQuery, FAQ jQuery, Tous les tutoriels JavaScript, Toutes les FAQ JavaScript
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 28/02/2011, 10h18   #1
Expert Confirmé
 
Avatar de grunk
 
Homme Olivier
Développeur Web
Inscription : août 2003
Messages : 1 837
Détails du profil
Informations personnelles :
Nom : Homme Olivier
Âge : 27
Localisation : France, Côte d'Or (Bourgogne)

Informations professionnelles :
Activité : Développeur Web
Secteur : Industrie

Informations forums :
Inscription : août 2003
Messages : 1 837
Points : 3 318
Points : 3 318
Par défaut Onglet , ajax et paramètres

Bonjour à tous,
j'essai de réaliser un petit script me permettant de gérer des onglets (je ne souhaite/peux pas utiliser jqueryUi) en jquery (1.4.4).

J'ai pour le moment fait quelque chose de très basique :

Code :
1
2
3
4
5
 
<ul>
    <li><a href="#iddiv">Contenu inline</a></li>
    <li><a href="ajax/contenuacharger"> Contenu ajax</a></li>
</ul>
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
 
$('#onglets-1 ul li a').click(function(e){
	e.preventDefault();
	var href = $(this).attr('href');
        $('.tab').hide();
	if(href.length > 1)
	{
		var firstChar = href.substring(0,1);
		if(firstChar == '#')
		{		   
		   $(href).show();
		}
		else
		{
		   $('#ajaxContent').load(href).show();
		}
	}
	else
	{
		$('#ajaxContent').html('Aucun contenu à afficher').show();
	}
});
Concrètement je suis en mesure d'afficher via mes onglets soit un contenu déjà présent dans la page (spécifier par son id) soit un contenu distant via requête ajax.

Mon problème ce situe au niveau des contenus avec ajax. Dans certains cas j'aimerais pouvoir passer une série d'argument à cette requête, mais je ne sais pas comment m'y prendre.
L'idéal serait une fonction de callback à spécifier dans l'onglet , mais de quel manière procéder ?
Passer ces arguments dans l'url n'ai pas vraiment une options car ces url ne correspondrait pas aux controllers qui gère l'appli ce que je souhaiterais éviter.

merci
grunk est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/02/2011, 14h07   #2
Rédacteur/Modérateur
 
Avatar de marcha
 
Homme Marc Chappuis
Développeur Web
Inscription : décembre 2003
Messages : 1 535
Détails du profil
Informations personnelles :
Nom : Homme Marc Chappuis
Âge : 41
Localisation : Suisse

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : décembre 2003
Messages : 1 535
Points : 2 206
Points : 2 206
Salut,

Tu peux ajouter des informations dans d'autres attributs de la balise a,
en html5 tu pourrais utiliser un attribut data-qqch='...' et autrement
tu peux utiliser rel='...'

Ne peux-tu pas aussi ajouter les arguments à ton href et les traiter
avant de faire ton load ?
__________________
Si ton code fait plus d'une ligne, c'est que tu as mal choisi ton langage !
marcha est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/02/2011, 14h15   #3
Expert Confirmé
 
Avatar de grunk
 
Homme Olivier
Développeur Web
Inscription : août 2003
Messages : 1 837
Détails du profil
Informations personnelles :
Nom : Homme Olivier
Âge : 27
Localisation : France, Côte d'Or (Bourgogne)

Informations professionnelles :
Activité : Développeur Web
Secteur : Industrie

Informations forums :
Inscription : août 2003
Messages : 1 837
Points : 3 318
Points : 3 318
Merci de ta réponse,

je pourrais effectivement mettre les arguments dans le href , mais comme je l'ai dis précédemment l'url ne correspondrait à rien.
par exemple si j'ai
Code :
<a href="ajax/mapage">Lien</a>
Si pas de js , pas de problème ajax/mapage sera ouvert

En revanche
Code :
<a href="ajax/mapage/attribut/1/qsd">Lien</a>
Si pas de js , cette url ne pointera peut être pas au bon endroit et prendre en compte toutes les possibilité coté routage php risque d'être compliqué.

J'ai essayé quelque chose avec l'attribut rel :
Code :
<a href="ajax/mapage" rel="fonctionCallback">Lien</a>
Mais comment appeler fonctionCallback ? Quelques chose comme cela :
Code :
1
2
var relfn = $(this).attr('rel');
var data = eval(relfn());
ne fonctionne pas , car évidemment il considère "relfn" comme une chaine
grunk est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/02/2011, 14h21   #4
Rédacteur/Modérateur
 
Avatar de marcha
 
Homme Marc Chappuis
Développeur Web
Inscription : décembre 2003
Messages : 1 535
Détails du profil
Informations personnelles :
Nom : Homme Marc Chappuis
Âge : 41
Localisation : Suisse

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : décembre 2003
Messages : 1 535
Points : 2 206
Points : 2 206
Salut,

Tu peux essayer avec window[relfn](...); pour autant que ta fonction
soit dans le contexte de window. (ce qui est le cas si tu la déclare sans autres)

Je te recommanderai d'utiliser un espace de nommage pour tes callbacks,
dans ce goût là:

Code :
1
2
3
4
5
6
7
var callbacks = {
 
  cb1: function() { return ...; },
  cb2: function() { return ...; },
  cb3: function() { return ...; }
 
};
Que tu peux ensuite appeler ainsi:

Code :
1
2
var relfn = $(this).attr('rel');
var data = callbacks[relfn]();
__________________
Si ton code fait plus d'une ligne, c'est que tu as mal choisi ton langage !
marcha est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/02/2011, 14h28   #5
Expert Confirmé
 
Avatar de grunk
 
Homme Olivier
Développeur Web
Inscription : août 2003
Messages : 1 837
Détails du profil
Informations personnelles :
Nom : Homme Olivier
Âge : 27
Localisation : France, Côte d'Or (Bourgogne)

Informations professionnelles :
Activité : Développeur Web
Secteur : Industrie

Informations forums :
Inscription : août 2003
Messages : 1 837
Points : 3 318
Points : 3 318
Parfait merci !
grunk est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 14h10.


 
 
 
 
Partenaires

Hébergement Web