2012-10-05 13 views

Respuesta

121

Añadir la outerheight a la parte superior y tiene la parte inferior, en relación con el elemento padre:

var $el = $('#bottom'); //record the elem so you don't crawl the DOM everytime 
var bottom = $el.position().top + $el.outerHeight(true); // passing "true" will also include the top and bottom margin 

Con elementos con posición absoluta o durante el posicionamiento en relación con el documento, se tendrá que evaluar vez el uso de desplazamiento:

var bottom = $el.offset().top + $el.outerHeight(true); 

como ha señalado trnelson esto no funciona el 100% del tiempo. Para utilizar este método para elementos posicionados, también debe contabilizar el desplazamiento. Para ver un ejemplo, vea el siguiente código.

var bottom = $el.position().top + $el.offset().top + $el.outerHeight(true); 
+1

funcionó de maravilla. ¡Gracias! – lagwagon223

+1

Belleza !! Esto funciona increíble! – tim687

+6

Envié una edición pero fue rechazada. Esta respuesta es técnicamente correcta en este contexto, pero no resuelve el problema el 100% del tiempo. Para usar este método para elementos posicionados, también debe tener en cuenta el desplazamiento: 'var bottom = $ ('# bottom'). Position(). Top + $ ('# bottom'). Offset(). Top + $ ('# bottom ') .outerHeight (verdadero) ' – trnelson

2
var bottom = $('#bottom').position().top + $('#bottom').height(); 
1

La parte inferior es el top + el outerHeight, no la height, ya que no incluiría el margen o material de relleno.

var $bot, 
    top, 
    bottom; 
$bot = $('#bottom'); 
top = $bot.position().top; 
bottom = top + $bot.outerHeight(true); //true is necessary to include the margins 
4

Las respuestas hasta ahora trabajarán .. si sólo desea utilizar la altura sin relleno, bordes, etc.

Si desea dar cuenta de relleno, bordes y márgenes, que debiera use .outerHeight.

var bottom = $('#bottom').position().top + $('#bottom').outerHeight(true); 
0
var top = ($('#bottom').position().top) + ($('#bottom').height()); 
9

EDIT: esta solución está ahora en la respuesta original también.

La respuesta aceptada no es del todo correcta. No debe utilizar la función position() ya que es relativa a la principal. (? En la mayoría de los casos) si se está haciendo de posicionamiento global sólo se debe añadir la parte superior compensado con el outerheight así:

var actualBottom = $(selector).offset().top + $(selector).outerHeight(true); 

Los documentos http://api.jquery.com/offset/

Cuestiones relacionadas