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électionner le 1er élement d'une certaine class mais de CHAQUE colonne d'un tableau ?


Sujet :

jQuery

  1. #1
    Membre éclairé
    Avatar de clavier12AZQSWX
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2009
    Messages
    1 388
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 388
    Points : 859
    Points
    859
    Par défaut Sélectionner le 1er élement d'une certaine class mais de CHAQUE colonne d'un tableau ?
    bonjour,

    j'ai un tableau dont je connais l'ID qui comporte 3 colonnes dont je ne connais pas les ID.
    Chaque colonne comporte plusieurs élement de class BOITE.
    Je voudrais que 1er élement BOITE de chaque colonne ait un padding top augmenté.

    Mon problème : avec jquery, il y a la methode .first mais elle ne peut pas être "resetté par colonne", elle le fait que sur l'ensemble du document ! et comme un talbeau est accessible que par TR et non par "colonne", je ne sais pas comment faire ?

    par exemple j'ai un code similaire à ça :
    Code html : 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
    <table id="montableau">
    <tr>
    <td><div class="boite">texte1</div><div class="autrechose">Grrrr</div></td>
    <td><div class="autrechose">Grrrr</div></td>
    <td><div class="boite">texte2</div><div class="autrechose">Grrrr</div></td>
    </tr>
    <tr>
    <td><div class="autrechose">Grrrr</div></td>
    <td><div class="boite">texte3</div><div class="autrechose">Grrrr</div></td>
    <td><div class="boite">texte4</div><div class="autrechose">Grrrr</div></td>
    </tr>
    <tr>
    <td><div class="autrechose">Grrrr</div></td>
    <td><div class="autrechose">Grrrr</div></td>
    <td><div class="boite">texte5</div><div class="autrechose">Grrrr</div></td>
    </tr>
    </table>

    si j'utilise cette technique de .first :
    https://api.jquery.com/first/

    alors je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $( ".boite" ).first().css( "padding-top", 50 );
    mais le problème c'est que ça modifie que la premiere "boite" de la 1ere colonne et hélas pas toutes les 1eres boites de chaque colonne.

    Dans mon résultat souhaité, texte1 texte3 et texte5 devraient avoir leur padding-top augmenté...
    sachant que je ne sais pas où ils sont positionné, ni leur id, ni même s'ils sont là, je veux juste augmenter le padding du 1er élement de class BOITE dans chaque TR (colonne).

    une idée de comment je pourrais itérer/parcourir cela sans IDs des colonnes ?

    merci de votre conseil ou tuyaux.

  2. #2
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    16 957
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 957
    Points : 44 121
    Points
    44 121
    Par défaut
    Bonjour,
    $( ".boite" ).first().css( "padding-top", 50 );
    en faisant de la sorte, seul le premier élément, quelque soit son paren, est pris en compte.

    Ces éléments n'étant pas parent direct des <tr> il te faut boucler sur ces dernières pour mieux cibler la sélection.

    Quelque chose comme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $("tr").each(function() {
      $(this).find(".boite").first().css(
        "padding-top", 50);
    });

  3. #3
    Membre éclairé
    Avatar de clavier12AZQSWX
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2009
    Messages
    1 388
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 388
    Points : 859
    Points
    859
    Par défaut
    merci NoSmoking, je ne connaissais pas cette syntaxe ou façon pour parcourir/boucler :
    $("tr").each(function() {..etc
    très instructif et utile !

    si je veux appliquer cela qu'au 3 premieres colonnes TR et non pas au 52, y-a-t-il un moyen de "breaker" l'iteration ou la limiter à 3 TR ?

    j'ai regardé la doc : https://api.jquery.com/each/
    visiblement il n'y a pas d'argument ou paramètre à ajouter pour limiter à 3;

  4. #4
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 405
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Suisse

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

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 405
    Points : 4 841
    Points
    4 841
    Par défaut
    Bonjour,

    Pour les 3 premieres lignes, tu peux utiliser le sélecteur Less Than :lt :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $("#montableau tr:lt(3)").each(function(){
    ........
    });
    Ou bien sans :lt mais + l'utilisation du paramètre index :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    $("#montableau tr")
    .each(function( index,tr ) {
        //le paramètre tr représente le <tr> parcouru, et $(tr).index()==index
        if(index<3){
                ....
        }
    });

  5. #5
    Membre éclairé
    Avatar de clavier12AZQSWX
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2009
    Messages
    1 388
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 388
    Points : 859
    Points
    859
    Par défaut
    ah oui c'est super pratique

    ps : la 1ere ligne de chacune des 3 colonnes c'est les 3 TD, et non pas les 3 TR; donc c'est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $("#montableau td:lt(3)").each(function(){
    		$(this).find(".boite").first().css("margin-top", 50);
     
    	});

  6. #6
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    16 957
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 957
    Points : 44 121
    Points
    44 121
    Par défaut
    Citation Envoyé par Toufik83
    Pour les 3 premieres lignes, tu peux utiliser le sélecteur Less Than :lt :
    Tout à fait ou encore avec un sélecteur CSS3 :nth-child(-n +3).

    Je me pose quand même une question, ne serait-il pas plus judicieux de le faire côté serveur !?!

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

Discussions similaires

  1. [9.3] Sélectionner des lignes apparaissant après une certaine ligne
    Par sayasinh dans le forum Requêtes
    Réponses: 4
    Dernier message: 22/01/2015, 13h55
  2. Réponses: 6
    Dernier message: 12/12/2013, 08h08
  3. [WPF] Comment sélectionner le 1er element d'un treeview en WPF?
    Par takinelinfo dans le forum Windows Presentation Foundation
    Réponses: 8
    Dernier message: 29/11/2013, 15h10
  4. [XL-2000] Comment sélectionner toutes les occurrences d'une listbox ?
    Par juju05 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 17/05/2013, 11h39
  5. Sélectionner le 1er caractère d'une chaine
    Par breizh44 dans le forum Débuter
    Réponses: 5
    Dernier message: 28/02/2008, 13h57

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