2012-07-26 12 views
5

Sto usando il metodo height()/width() ma il suo valore di ritorno senza i valori padding e margin. Non ho problemi a calcolare il totale con/i valori di altezza.Come calcolare la larghezza e l'altezza dell'elemento con i valori di riempimento/margine usando meno codice?

In questo modo funziona, ma il mio problema è; è troppo lungo per calcolare tutti loro. C'è un modo per calcolarli con meno codice senza bug?

Here is jsFiddle example.

jQuery:

var ele = $('div'); 

var eleW = ele.width(); 
var eleH = ele.height(); 

alert(eleW);//returning 200 
alert(eleH);//returning 100 

var eleMR = parseInt(ele.css('margin-right')); 
var eleML = parseInt(ele.css('margin-left')); 
var eleMT = parseInt(ele.css('margin-top')); 
var eleMB = parseInt(ele.css('margin-bottom')); 

var elePR = parseInt(ele.css('padding-right')); 
var elePL = parseInt(ele.css('padding-left')); 
var elePT = parseInt(ele.css('padding-top')); 
var elePB = parseInt(ele.css('padding-bottom')); 

var eleTotalWidth = eleMR + eleML + elePR + elePL + eleW; 
var eleTotalHeight = eleMT + eleMB + elePT + elePB + eleW; 

alert(eleTotalWidth);//returning 147 
alert(eleTotalHeight);//returning 122 

css:

div { 
     float:left; width:100px; height:200px; background-color:#000; 
     margin:5px 3px 2px 4px; padding:10px 20px 5px; 
    }​ 

risposta

11

Usa outerWidth(); e outerHeight();

var ele = $('div'); 

var eleW = ele.outerWidth(true); 
var eleH = ele.outerHeight(true); 
+0

http://jsfiddle.net/B7fMW/7/ Thi s sta calcolando senza margini, ma è ancora meno codice del mio (: –

+0

Come per @WouterH dobbiamo passare true come menzionato nella documentazione. Passa true includerà anche il tuo margine. – Vins

+0

+1 per la tua risposta .. nice –

Problemi correlati