IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

jQuery Discussion :

Sélecteurs et after


Sujet :

jQuery

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2013
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2013
    Messages : 12
    Par défaut Sélecteurs et after
    Bonjour,

    J'ai besoin d'aide pour un problème de sélecteur(je pense): mon code récupère les nom de label, les envoie via la fonction ajax qui me renvoie un liste json des contenu, à partir de ca je crée une image et affiche son title via la fonction tooltip....tout va bien jusqu'à la ligne souligné où Firebug m'affiche
    TypeError: listField[j].after is not a function
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    $(document).ready(function() {
    	var listReq = $("form label").filter(".required");
    	var listOpt = $("form label").filter(".optional");
    	var listField = $.merge(listReq,listOpt);
     
    	var param = "sessionid" + document.location.href.split("sessionid")[1];
     
    	var list=new Array();
    	for(var i=0;i<listField.length;i++ ){
    		list.push(listField[i].getAttribute("for"));
    	}
     
    	$.ajax({
    		type: "POST",
    		url: "/@@appid@@/App-Saas-Commun_Aide/Form?"+param,
    		data: "list="+list,
    		success: function(results){
    			var fields = JSON.parse(results);
    			for(var i=0;i<fields.length;i++ ){
    				for(var j=0;j<listField.length;j++ ){
    					if(listField[j].getAttribute("for").split('__')[1] == fields[i].FIELD){
    						listField[j].after('<img title="' + fields[i].CONTENT + '" src="/@@appid@@/Style/IMG/bt_help_gris.gif" height="17" width="17">');
    						listField[j].next('img').tooltip();
    					}
    				}
    			}
    		}
    	});
    });
    Merci d'avance

  2. #2
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Ton if
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(listField[j].getAttribute("for").split('__')[1] == fields[i].FIELD)
    indique que listField[j] est un élément DOM, pas un objet jQuery et dans ce cas, il ne possède effectivement pas de méthode .after().
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2013
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2013
    Messages : 12
    Par défaut
    Merci de ta réponse bovino!

    La solution si ca peut aider:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    for(var j=0;j<listField.length;j++ ){
    	if(listField[j].getAttribute("for").split('__')[1] == fields[i].FIELD){
    	        var jListField = $(listField.get(j));
    		jListField.after('<img title="' + fields[i].CONTENT + '" src="/@@appid@@/Style/IMG/bt_help_gris.gif" height="17" width="17">');
    		jListField.next('img').tooltip();
    	}
    }

  4. #4
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var jListField = $(listField[j]);
    me semble plus simple et approprié...
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2013
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2013
    Messages : 12
    Par défaut
    Oui c'est vrai, c'est dû à un copier-coller, mais il ya une grande différence en terme de vitesse ou de coût???

  6. #6
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Sur des scripts aussi légers, les différences de performances existent, mais sont insignifiantes, seulement c'est maladroit.
    D'ailleurs, ma solution n'est pas optimale non plus puisque listField est déjà une collection d'objets jQuery, donc
    est suffisant.
    Ce qu'il faut comprendre, c'est qu'à chaque fois que tu passes par $(), tu forces ton script à réexécuter toute la moulinette jQuery pour transformer le paramètre en objet jQuery, ce qui est particulièrement inutile si tu pars déjà d'un objet jQuery.
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. TRIGGER After Update
    Par Nounoursonne dans le forum Oracle
    Réponses: 8
    Dernier message: 20/07/2005, 13h33
  2. [9i] problème avec trigger after logon
    Par Michael# dans le forum Oracle
    Réponses: 2
    Dernier message: 17/03/2005, 12h14
  3. Droit pour faire un déclencheur "after logon on databas
    Par eXiaNazaire dans le forum Oracle
    Réponses: 5
    Dernier message: 05/01/2005, 15h11
  4. [Trigger] Trigger instead of , after ?
    Par |DUCATI| DesMo dans le forum Développement
    Réponses: 5
    Dernier message: 05/10/2004, 10h02
  5. Trigger AFTER
    Par Maitre B dans le forum Développement
    Réponses: 2
    Dernier message: 11/06/2004, 09h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo