NonDocumentTypeChildNode.previousElementSibling

La propiedad de sólo lectura NonDocumentTypeChildNode.previousElementSibling retorna el Element predecesor inmediato al especificado dentro de la lista de hijos de su padre, o bien null si el elemento especificado es el primero de dicha lista.

Sintaxis

prevNode = elementNodeReference.previousElementSibling; 

Ejemplo

<div id="div-01">Aquí está div-01</div>
<div id="div-02">Aquí está div-02</div>
<li>Esto es un elemento de lista</li>
<li>Esto es otro elemento de lista</li>
<div id="div-03">Aquí esta div-03</div>

<script>
  var el = document.getElementById('div-03').previousElementSibling;
  document.write('<p>Hermanos de div-03</p><ol>');
  while (el) {
    document.write('<li>' + el.nodeName + '</li>');
    el = el.previousElementSibling;
  }
  document.write('</ol>');
</script>

Este ejemplo muestra lo siguiente en la página cuando carga:

Hermanos de div-03

   1. LI
   2. LI
   3. DIV
   4. DIV

Polyfill para Internet Explorer 8

Esta propiedad no está soportada con anterioridad a IE9, así que puede utilizarse el siguiente fragmento para añadri el soporte a IE8:

// Source: https://github.com/Alhadis/Snippets/blob/master/js/polyfills/IE8-child-elements.js
if(!("previousElementSibling" in document.documentElement)){
    Object.defineProperty(Element.prototype, "previousElementSibling", {
        get: function(){
            var e = this.previousSibling;
            while(e && 1 !== e.nodeType)
                e = e.previousSibling;
            return e;
        }
    });
}

Especificaciones

Especificación Estado Observaciones
DOM
The definition of 'NonDocumentTypeChildNode.previousElementSibling' in that specification.
Living Standard Dividió el interfaz ElementTraversal en ChildNode, ParentNode, y NonDocumentTypeChildNode. Este método queda ahora definida en el primero.
Los interfaces Element y CharacterData implementaron la nueva interfaz.
Element Traversal Specification
The definition of 'ElementTraversal.previousElementSibling' in that specification.
Recommendation Añadida su definición inicial al interfaz puro ElementTraversal y lo usa en Element.

Compatibilidad con navegadores

Prestación Chrome Firefox (Gecko) Internet Explorer Opera Safari
Soporte básico (en Element) 4 3.5 (1.9.1) 9 9.8 4
Soporte en CharacterData 29.0 25 (25) [1] No support 16.0 No support
Prestación Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
Soporte básico (en Element) (Yes) 1.0 (1.9.1) (Yes) 9.8 (Yes)
Soporte en CharacterData (Yes) 25.0 (25) No support 16.0 No support

[1] Firefox 25 también añadía esta propiedad a DocumentType, y fue eliminada en Firefox 28 debido a problemas de compatibildad.

Ver también

Etiquetas y colaboradores del documento

 Colaboradores en esta página: Grijander81
 Última actualización por: Grijander81,