support only internet funciona for javascript jquery css internet-explorer-8 css-selectors

javascript - only - Obteniendo el último hijo de un div en IE8?



jquery support (8)

¿Hay alguna otra forma de obtener el último elemento secundario de un elemento div que no sea el uso de div:last-child , que no funciona en IE8 al menos?


Desafortunadamente, no conozco una manera de hacer esto en CSS sin usar: last-child, que (como dijiste) falla en IE.

Si estás hablando de javascript, entonces es posible usar Node.lastChild:

var div = document.getElementById("mydiv"); var lastChild = div.lastChild;


Puedes asignar una clase ''last'' programmatically y seleccionar esa o usar javascript. También puede tener una oportunidad usando algunas de las cosas de script de CSS de Microsofts IE. Pero no sé mucho sobre ellos, tampoco los considero como una opción.


En jQuery es fácil:

$("div :last-child")

En CSS puro no se puede hacer.

De lo contrario, estás atrapado en atravesar el DOM en Javascript.

También tenga en cuenta la diferencia:

  • "div :last-child" : hasta el último hijo de un div; y
  • "div:last-child" : cada div que es un último hijo.

Use jQuery para encontrar los elementos apropiados: $("div:last-child").addClass("last-child");

Luego use CSS para especificar la presentación: div .last-child { /* your rules */ }


var divs = $("id").getElementsByTagName(''div''); var lastChild = divs[divs.length-1];


Hay algunos casos en los que definitivamente no desea usar $ ("div: last-child") fuera de la caja. Una cosa importante a tener en cuenta es que esto no atenderá los cambios en el DOM después de esa llamada; por ejemplo, si se agrega un nuevo elemento como último hijo, deberá actualizar las cosas. No es solo un caso de repetir la llamada anterior, tampoco; Deberá revertir la llamada inicial del último hijo anterior.

Si estás haciendo algo vagamente dinámico, desconfía de esto. la pseudo-clase CSS definitivamente es la solución superior, simplemente tiene una horrible falta de soporte en IE. Si su diseño puede hacer frente a la pérdida de soporte de último hijo en IE, y está utilizando el enriquecimiento progresivo, recomiendo encarecidamente el enfoque de CSS sobre JS.


Hago esto con JavaScript puro haciendo un bucle de vuelta a través de los nodos del lastChild del elemento de destino. Si hay espacio en blanco en su HTML, lastChild puede ser un nodo de texto, por lo que hacemos un bucle hasta que encontremos un nodo de elemento (tipo de nodo 1) o hasta que nos quedemos sin nodos (previousSibling devolverá nulo).

Por ejemplo, para encontrar el último elemento en una página, repito desde lastChild del cuerpo:

var targetElement = document.getElementsByTagName("body")[0], lastChildElement = targetElement.lastChild; while (lastChildElement && lastChildElement.nodeType !== 1) { lastChildElement = lastChildElement.previousSibling; } if (lastChildElement) { // Do something }

Si no hay ningún elemento dentro del cuerpo, lastChileElement saldrá de este ciclo como nulo.


Avance rápido >> 4 años después (2013)
Ahora es posible con CSS v3 (CSS3) y es compatible con todos los principales navegadores (con IE es> = versión 9).
Si viaja en el tiempo con IE <= versión 8 , entonces jQuery versión <1.x lo resolverá (tal como lo han señalado las otras respuestas).
Leer más http://www.w3schools.com/cssref/sel_last-child.asp