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

答えの前の簡単なメモ:$('div.wigDiv', this).parent().first()オブジェクトを返すため、最後の if ステートメントは常に true になります。

最初に選択した要素のみにフィルターするには、次を使用します。.first()

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