2013-03-19 18 views
18

Es scheint, Firefox (mindestens v19.0.2) hat ein Problem mit jQuery css() Funktion, wenn Sie versuchen, ein Element padding zu bekommen.jQuery css ('padding') - Problem mit Firefox

Ich habe nicht das Problem, wenn ich .css('padding-left') verwende, aber es wäre nett, eine einzelne Zeile anstelle von 4 zu schreiben, besonders auf einer einfachen Funktion wie diesem.

Hier ist ein Beispiel, mein Problem zu zeigen, bitte vergleichen Chrome/Firefox Verhalten:

$('#log').append(
 
    'padding : '+  $('#sample').css('padding')+'\n'+ 
 
    'padding-top : '+ $('#sample').css('padding-top')+'\n'+ 
 
    'padding-bottom : '+ $('#sample').css('padding-bottom')+'\n'+ 
 
    'padding-left : '+ $('#sample').css('padding-left')+'\n'+ 
 
    'padding-right : '+ $('#sample').css('padding-right')+'\n' 
 
);
#sample { 
 
    border: 1px solid black; 
 
    padding: 8px; 
 
    margin: 10px; 
 
} 
 
#log { 
 
    padding: 8px; 
 
    margin: 10px; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script> 
 
<div id="sample">Lorem ipsum</div> 
 
<textarea id="log" rows="10" cols="50"></textarea>

Bin ich etwas fehlt? Oder gibt es eine Problemumgehung, um padding eines Elements abzurufen, ohne 4 Funktionen aufzurufen?

Danke.

Antwort

21

Siehe bug #13421 (obwohl dies kein Fehler ist).

Die Dokumentation für css() sagt:

Stenografie CSS-Eigenschaften (z margin, background, border) nicht unterstützt. Wenn Sie beispielsweise den gerenderten Rand abrufen möchten, verwenden Sie : $(elem).css('marginTop') und $(elem).css('marginRight') und so on.

padding ist solch eine Eigenschaft, so dass Sie in der Tat paddingLeft verwenden, paddingRight usw.

+1

Oh, verpassten es im doc, vielen Dank für Ihre Erklärung. – zessx