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
La definición de 'NonDocumentTypeChildNode.previousElementSibling' en esta especificación.
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
La definición de 'ElementTraversal.previousElementSibling' en esta especificación.
Obsolete Añadida su definición inicial al interfaz puro ElementTraversal y lo usa en Element.

Compatibilidad con navegadores

We're converting our compatibility data into a machine-readable JSON format. This compatibility table still uses the old format, because we haven't yet converted the data it contains. Find out how you can help!

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] Sin soporte 16.0 Sin soporte
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) Sin soporte 16.0 Sin soporte

[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,