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 :

Récupérer des éléments enfants sous la forme d'une liste d'objets jQuery et non comme éléments du DOM


Sujet :

jQuery

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 9
    Points : 8
    Points
    8
    Par défaut Récupérer des éléments enfants sous la forme d'une liste d'objets jQuery et non comme éléments du DOM
    Bonjour,
    j'ai le soucis suivant, je ne parvient pas à récupérer les enfants d'une div sous la forme d'objet jquery, ici en l'occurrence des images.

    voici mon code HTML:
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    			<div id="imageRow">
     
    					<a class="single first" href="img/lb/examples/image-3.jpg" rel="lightbox[plants]" title="Click on the right side of the image to move forward."><img src="" class="loading" alt="Plants: image 1 0f 4 thumb" /></a>
     
    					<a class="single" href="img/lb/examples/image-4.jpg" rel="lightbox[plants]" title="Alternately you can press the right arrow key." ><img class="loading" src="" alt="Plants: image 2 0f 4 thumb" /></a>
     
    					<a class="single" href="img/lb/examples/image-5.jpg" rel="lightbox[plants]" title="The script preloads the next image in the set as you're viewing."><img class="loading" src="" alt="Plants: image 3 0f 4 thumb" /></a>
     
    					<a class="single last" href="img/lb/examples/image-6.jpg" rel="lightbox[plants]" title="Click the X or anywhere outside the image to close"><img class="loading" src="" alt="Plants: image 4 0f 4 thumb" /></a>
     
    	 		</div>

    La solution que l'on m'a proposé pour le moment est:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    	$('#imageRow').find('img').each( function(){
    		$(this).attr('src', url+imgs[($(this).index('img')-2)]);
    		$(this).delay(2000).removeClass('loading');
    	});
    Ce qui marche mais je manipule l'ensemble des images et non une par une, à moins de les ajouter dans une array il n'y a pas d'autres solutions?

    J'ai essayé:
    $("#imageRow").find('img')[2]; mais évidemment elle me retourne [object HTMLImageElement] sur le quel je ne peux pas appliquer de méthode jquery.
    $("#imageRow").find('img').first(); me retourne par contre bien un objet jquery (le premier de la liste) mais $("#imageRow").find('img').next(); ne fonctionne pas. Je n'arrive pas à obtenir un par un les objets excepté le premier et le dernier (.last()).

    J'ai essayé .children() et .contents() mais j'ai toujours des élément du DOM:
    [object HTMLImageElement] à moins que je les ai mal utilisées.

    Voilà, comment faire pour obtenir une liste (si possible) des éléments enfant de la div (imageRow) sous la forme d'objet jquery?

    Merci beaucoup.
    Au passage existe t'il une fonction jQuery pour afficher l'ensemble des attributs ou un max d'infos sur un objet jQ (une sorte de sérialisation, je ne sais pas si j'ai été très clair)?
    J'ai ça en attendant mais j'aimerai bien avoir le type entre autres de l'élément:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    	var attrs = $("#imageRow").find('img')[2].attributes;
    	for(var i=0;i<attrs.length;i++){
    	alert(attrs[i].nodeName + " => " + attrs[i].nodeValue);
    	}

  2. #2
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 637
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 637
    Points : 66 656
    Points
    66 656
    Billets dans le blog
    1
    Par défaut
    HEu ???? je suis perplexe
    Quel est le but de la maneouvre ...

    si tu veux mettre la main sur une image en particulier utilise la puissance des selecteurs jquery



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $('#imageRow').find('img:eq(indexe)')
    avec index = de 0 à img.length

    ou

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $('#imageRow').find('img:nth-child(pos)')
    avec pos de 0 à img.length
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  3. #3
    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 : 53
    Localisation : France, Gironde (Aquitaine)

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

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 418
    Points
    91 418
    Billets dans le blog
    20
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $('#imageRow').find('img')
    renvoie une collection d'objets jQuery.
    C'est dans le callback de .each() que tu récupères un objet DOM, d'où le $(this).

    EDIT
    Ceci dit, tu peux appliquer le callback directement à .attr() sans passer par .each() :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $('#imageRow').find('img').attr('src', function(index, ancienneValeurDeAttr){
        // Ici, this correspond à l'élément en cours
    });
    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

Discussions similaires

  1. Réponses: 4
    Dernier message: 02/03/2009, 00h16
  2. Récupérer des états Access sous Oracle Reports
    Par esthr dans le forum Reports
    Réponses: 2
    Dernier message: 23/04/2008, 12h52
  3. récupérer des données XML sous forme de tableau
    Par ar vuzhugenn dans le forum ActionScript 1 & ActionScript 2
    Réponses: 8
    Dernier message: 22/04/2008, 21h21
  4. [phpMyAdmin] Les bases ne sont plus listées sous la forme d'une liste
    Par loopback dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 2
    Dernier message: 05/01/2008, 15h57
  5. comment récupérer des données MATLAB sous delphi
    Par redhammd dans le forum Bases de données
    Réponses: 1
    Dernier message: 04/06/2007, 16h01

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