2013-03-19 17 views
18

Wygląda na to, że Firefox (przynajmniej v19.0.2) ma problem z funkcją jQuery css(), gdy próbujesz uzyskać element padding elementu.jQuery css ('padding') - Wydanie z Firefoksem

Nie mam problemu, gdy używam .css('padding-left'), ale byłoby miło napisać pojedynczą linię zamiast 4, szczególnie na prostej funkcji, takiej jak ta.

Oto przykład, aby pokazać mój problem, proszę porównać zachowań Chrome/Firefox:

$('#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>

Am I brakuje czegoś? Czy istnieje obejście do odzyskania elementu padding bez wywoływania 4 funkcji?

Dzięki.

Odpowiedz

21

Zobacz bug #13421 (chociaż w rzeczywistości nie jest to błąd).

Dokumentacja css() mówi:

Skrócone właściwości CSS (np margin, background, border) nie są obsługiwane. Na przykład, jeśli chcesz odzyskać renderowany margines, należy użyć: : $(elem).css('marginTop') i $(elem).css('marginRight'), a następnie na.

padding taka nieruchomość, więc będzie rzeczywiście trzeba używać paddingLeft, paddingRight itp

+1

Och, brakowało go w dokumencie, dzięki za wyjaśnienie. – zessx