[Javascript] Come rendere jQuery al valore non arrotondato restituito da .width ()?


Answers

Volevo solo aggiungere la mia esperienza qui, anche se la domanda è vecchia: il consenso sopra sembra essere che l'arrotondamento di jQuery sia efficace proprio come un calcolo senza soluzione, ma non sembra essere il caso di qualcosa che ho fatto .

Il mio elemento ha una larghezza fluida, generalmente, ma il contenuto cambia in modo dinamico tramite AJAX. Prima di cambiare il contenuto, blocco temporaneamente le dimensioni dell'elemento in modo che il mio layout non rimbalzi durante la transizione. Ho trovato che usando jQuery in questo modo:

$element.width($element.width());

sta causando un po 'di divertimento, come ci sono differenze sub-pixel tra la larghezza effettiva e la larghezza calcolata. (In particolare, vedrò una parola saltare da una riga di testo a un'altra, indicando che la larghezza è stata cambiata, non solo bloccata.) Da un'altra domanda - Ottenere la larghezza effettiva, a virgola mobile di un elemento - Ho trovato fuori che window.getComputedStyle(element).width restituirà un calcolo non arrotondato. Così ho cambiato il codice sopra per qualcosa di simile

var e = document.getElementById('element');
$('#element').width(window.getComputedStyle(e).width);

E con quel codice - niente buffo rimbalzo! Quell'esperienza sembra suggerire che il valore senza limiti sia effettivamente rilevante per il browser, giusto? (Nel mio caso, Chrome versione 26.0.1410.65.)

Question

Ho cercato in giro e non ho trovato questo. Sto cercando di ottenere la larghezza di un div, ma se ha un punto decimale arrotonda il numero.

Esempio:

#container{
    background: blue;
    width: 543.5px;
    height: 20px;
    margin: 0;
    padding: 0;
}

Se faccio $('#container').width(); restituirà 543 anziché 543,5. Come faccio a ottenere non arrotondare il numero e restituire il completo 543.5 (o qualunque numero sia).




Puoi usare getComputedStyle per questo:

parseFloat(window.getComputedStyle($('#container').get(0)).width)