jQuery仅将样式应用于第一个元素

时间:2012-10-25 21:11:33

标签: jquery each

在下面的代码中,我试图将最后一个if语句从第一个margin-top div.wigDiv中减去parent。一切正常,除了它将负余量应用于所有div.wigDiv父母。有什么想法吗?

$('.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');
         }
      }
   }
}

4 个答案:

答案 0 :(得分:2)

试试这段代码:

$('.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');
         }
      }
   }
}

答案 1 :(得分:1)

您只需要在.first条件下使用if即可。此外,如果条件仅在找到匹配元素时才适用,则不需要。

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

完整代码:

$('.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');
      }
   }
}

答案 2 :(得分:0)

你正在做

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

需要做parent().first().css:)

答案 3 :(得分:0)

回答前快速说明:你的最后一句if语句将永远为真,因为$('div.wigDiv', this).parent().first()会返回一个对象。

要仅过滤到第一个选定元素,请使用.first()

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