2015-06-29 22 views
7

Se desidero includere il margine quando si misura la larghezza di un elemento, è possibile chiamare element.outerWidth(true); Tuttavia, non riesco a trovare un modo simile per ottenere l'offset sinistro di un elemento in un contenitore, dove il margine è incluso. element.position().left non include margine.Posizione jquery() include il margine

Ho provato element[0].getBoundingClientRect().left e funziona ma c'è una chiamata jquery simile?

EDIT: Sembra che la chiamata nativo JavaScript sopra non mi dà il margine sia ..

risposta

15

Questa è una limitazione di .position di jQuery(), che ha questa limitazione:

Nota: jQuery non supporta il rilevamento delle coordinate di posizione degli elementi nascosti o la contabilizzazione di bordi, margini o spaziature sull'elemento del corpo.

Soluzione consigliata: compensato

var position = $element.position(); 
x = position.left + parseInt($element.css('marginLeft'), 10); 
y = position.top + parseInt($element.css('marginTop'), 10); 
+0

Suppongo che il codice in questa risposta funziona in alcune situazioni, ma l'interrogazione 'marginLeft' per me restituisce una stringa con il suffisso unitario, ad esempio "20px", quindi deve essere convertito. Supponendo che jQuery restituisca sempre margini in pixel, qualcosa di simile funzionerà: x = position.left + parseInt ($ element.css ('marginLeft')) – David

+0

Grazie @David, corretto. La funzione offset() di –

-1

utilizzare jQuery() funzione

<!doctype html> 
<html lang="en"> 
<head> 
    <meta charset="utf-8"> 
    <title>offset demo</title> 
    <style> 
    p { 
    margin-left: 10px; 
    } 
    </style> 
    <script src="https://code.jquery.com/jquery-1.10.2.js"></script> 
</head> 
<body> 

<p>Hello</p><p>2nd Paragraph</p> 

<script> 
var p = $("p:last"); 
var offset = p.offset(); 
p.html("left: " + offset.left + ", top: " + offset.top); 
</script> 

</body> 
</html> 
+0

ha la [stessa limitazione] (https://api.jquery.com/offset/): _Nota: jQuery non supporta il recupero delle coordinate di offset degli elementi nascosti o la contabilizzazione di bordi, margini o spaziatura impostata su l'elemento body._ – Ousmane