2012-10-25 88 views
2

在下面的代碼中,我試圖將最後一條if語句從第一個div.wigDivparent減去margin-top。除了將所有的div.wigDiv家長的負邊距應用於所有東西之外,所有東西都在起作用。有任何想法嗎?jQuery僅將樣式應用於第一個元素

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

一個元素只能有一個父,這是許多答案,疏於考慮(除亞歷山德羅的),這樣做'。首先() ''on'.parent()'什麼都不做。我想你可能是指當前'.wigCont'(''this'在'each'內部)中包含的第一個'div.wigDiv'的父節點,或者可能是第一個''div.wigDiv'的父節點。 wigCont「(也就是'each'的第一次迭代),這並不完全清楚,如果能夠簡化它,發佈HTML將有助於消除混淆, –

回答

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'); 
     } 
     } 
    } 
} 
+0

工作正常!!感謝您的幫助,Alessandro。 – Chris

+0

歡迎您! –

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'); 
     } 
    } 
} 
0

你做

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

需要的答案之前做parent().first().css :)

0

快速記:你最後的if語句會永遠是真的,因爲$('div.wigDiv', this).parent().first()重新變成一個物體。

要進行過濾,僅第一個選擇的元素,使用.first()

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