2012-05-17 45 views
1

我已經看了:How to set margin with jquery?如何使用jquery爲div中的每個元素設置保證金?

這就是我想:

$(document).ready(function() { 
    $(".content").each(function (el) { 
     el.css('margin', '0px'); 
    }) 
}); 

這不,雖然工作;現在我必須在樣式表中將邊距設置爲零。

+3

你**應該**使用CSS來改變樣式。 JS應該用來改變*類*。 – zzzzBov

+0

我完全同意,問題在於當我的'內容'div中有一些標籤創建奇數頁邊距時,會使'content'div移動。爲了避免這種情況,我刪除了邊距。但是,由於我無法預測將應用邊距的每個標籤,因此我通過jQuery動態地將其刪除。如果我可以通過CSS來做到這一點,我寧願這樣做。 –

+0

事實上,我只是嘗試在我的CSS中使用通配符,它​​的工作原理與我的選擇器無關!真棒! –

回答

3

這應該做的伎倆。

$(document).ready(function() { 
    $(".content *").css('margin', '0px'); 
}); 

問題是你設置的元素本身,而不是它的孩子的邊緣。
選擇器.content *的意思是「任何內容與類內容的元素」。 (任何東西,而不只是直接的孩子。)

+0

這是我以爲他的意思。 +1 – mrtsherman

+0

這工作!謝謝!我會在8分鐘內標記爲正確的:D –

+0

慢慢來。正確的答案甚至不是解決問題的第一步,而是最好的解決問題的方法。也許別人會提供更好的。 :) – ANeves

3

css已經遍歷每個元素:

$('.content').css('margin', '0'); 

您遇到的問題是,each經過DOM節點本身的功能,但它的第二個參數:

$('.content').each(function (i, ele) { 
    $(ele).css('margin', '0'); 
    //the context is also set to the element 
    $(this).css('margin', '0'); 
}); 

重新閱讀你的問題後,看起來你已經選擇了錯誤的選擇器,我不能告訴你是否想要所有的兒童或全部後代,選擇應該是:

$('.content > *') 

- 或 -

$('.content *') 

分別

+1

我希望我能雙倍投票這 – Kristian

相關問題