2

在下面的代码中,我试图让最后一个 if 语句只减去margin-topFIRST 中的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

4 回答 4

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');
         }
      }
   }
}
于 2012-10-25T21:14:22.500 回答
1

你只需要.first在那种if情况下使用。此外,您不需要 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');
      }
   }
}
于 2012-10-25T21:14:33.490 回答
0

你正在做的

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

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

于 2012-10-25T21:15:07.063 回答
0

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

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

$('div.wigDiv', this).parent().first().css('margin-top','-20px');
于 2012-10-25T21:15:08.417 回答