2 votes

jQuery Appliquer le style au premier élément seulement

Dans le code suivant, j'essaie de faire en sorte que la dernière instruction if ne soustraie que la valeur de l'instruction margin-top du PREMIER div.wigDiv parent . Tout fonctionne, sauf qu'il applique la marge négative à TOUTES les activités de l'entreprise. div.wigDiv parents. Des idées ?

$('.wigCont').each(function() {

   //some other code here

   if ($('div.wigDiv', this).hasClass('noMargin')) {
      if (wigCount == 1) {
         var width = $('div.wigDiv', this).width();
         $('div.wigDiv', this).css({'margin-left':'-18px', 'width': width+36});

         if ($('div.wigDiv', this).parent().first()) {
            $('div.wigDiv', this).parent().css('margin-top','-20px');
         }
      }
   }
}

2voto

Alessandro Minoccheri Points 12477

Essayez ce code :

$('.wigCont').each(function() {

   //some other code here

   if ($('div.wigDiv', this).hasClass('noMargin')) {
      if (wigCount == 1) {
         var width = $('div.wigDiv', this).width();
         $('div.wigDiv', this).css({'margin-left':'-18px', 'width': width+36});

         if ($('div.wigDiv', this).parent().is(':first-child')) {
            $('div.wigDiv', this).parent().css('margin-top','-20px');
         }
      }
   }
}

1voto

Vega Points 44724

Il suffit d'utiliser .first comme vous l'avez fait dans ce if condition. Vous n'avez pas besoin non plus de la condition if, car elle ne s'applique que si les éléments correspondants sont trouvés.

$('div.wigDiv', this).parent().first().css('margin-top','-20px');

Code complet :

$('.wigCont').each(function() {

   if ($('div.wigDiv', this).hasClass('noMargin')) {
      if (wigCount == 1) {
         var width = $('div.wigDiv', this).width();
         $('div.wigDiv', this).css({'margin-left':'-18px', 'width': width+36});

         //below is the modified code
         $('div.wigDiv', this).parent().first().css('margin-top','-20px');
      }
   }
}

0voto

stacktrace Points 319

Tu fais

$('div.wigDiv', this).parent().css('margin-top','-20px');

Besoin de faire parent().first().css :)

0voto

Kevin B Points 57721

Note rapide avant de répondre : votre dernière instruction if sera toujours vraie car $('div.wigDiv', this).parent().first() renvoie un objet.

Pour filtrer uniquement sur le premier élément sélectionné, utilisez .first()

$('div.wigDiv', this).parent().first().css('margin-top','-20px');

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X