02 Apr

Todo programador web se enfrenta a la tarea de manipular dinámicamente la estructura del DOM de una página, y cómo no, JQuery también nos ofrece métodos que nos facilitarán mucho dicha tarea.

Insertar elementos

Para insertar elementos en el DOM con JQuery envolviendo unos dentro de otros, disponemos de los siguientes métodos:

  • wrap(): envuelve cada uno de los elementos seleccionados (por separado) dentro de otro.
  • wrapAll(): envuelve todos los elementos seleccionados (agrupados) dentro de otro.
  • wrapInner(): funciona al contrario que los anteriores, insertando un elemento dentro de los seleccionados.
  • unwrap(): elimina el padre del elemento indicado.

EJEMPLO:

  1.     </script>
  2.   </head>

  3.   <body>

  4.       <input type="button" id="btn_wrap" value="wrap()" />
  5.       <input type="button" id="btn_wrapAll" value="wrapAll()" />
  6.       <input type="button" id="btn_unwrap" value="unwrap()" />
  7.       <input type="button" id="btn_wrapInner" value="wrapInner()" /><p />

  8.       <div id="contenedor1">
  9.           <span>Esto es un span | </span>
  10.           <span class="rojo">Esto es otro span | </span>
  11.           <span class="rojo">Esto es otro span | </span>
  12.           <span>Esto es otro span</span>
  13.           <p id="p1">Esto es un párrafo</p>
  14.       </div>

  15.   </body>

  16. </html>

Por otro lado, los siguientes métodos permiten insertar contenido fuera de un elemento:

  • after(): inserta contenido después de un elemento.
  • before(): inserta contenido antes de otro elemento.

EJEMPLO:

  1.    </script>
  2.   </head>

  3.   <body>

  4.       <input type="button" id="btn_after" value="after()" />
  5.       <input type="button" id="btn_before" value="before()" />

  6.       <div id="contenedor1">
  7.           <p>Esto es un párrafo</p>
  8.           <p>Esto es otro párrafo</p>
  9.       </div>

  10.   </body>

  11. </html>

Por último, con los siguientes métodos es posible insertar contenido dentro de otro elemento (algunos de ellos ya los hemos explicado anteriormente):

  • append(): inserta contenido después del existente en un elemento.
  • html(): devuelve o establece el código HTML de un elemento.
  • prepend(): inserta contenido antes del existente en un elemento.
  • text(): devuelve el texto combinado de cada uno de los elementos seleccionados (incluido el de otros elementos que puedan a su vez contener). También se puede usar para definir el contenido de un elemento.

EJEMPLO:


  1.     </script>
  2.   </head>

  3.   <body>

  4.       <input type="button" id="btn_append" value="append()" />
  5.       <input type="button" id="btn_prepend" value="prepend()" />

  6.       <div id="contenedor1">
  7.           <p class="rojo">Esto es un párrafo.</p>
  8.           <p class="verde">Esto es otro párrafo.</p>
  9.       </div>

  10.   </body>

  11. </html>

Eliminar elementos

Para remover elementos disponemos de los siguientes métodos:

  • detach(): remueve elementos con la posibilidad de que puedan ser insertados nuevamente manteniendo las funcionalidades que tenían definidas (como por ejemplo sus eventos).
  • empty(): remueve los elementos hijo del elemento especificado.
  • remove(): elimina de forma definitiva un elemento junto con los otros que contenga.
  • unwrap(): remueve el elemento padre del especificado.

EJEMPLO:

  1.  </script>
  2.   </head>

  3.   <body>

  4.       <input type="button" id="btn_empty" value="empty()" />
  5.       <input type="button" id="btn_remove" value="remove()" />
  6.       <input type="button" id="btn_unwrap" value="unwrap()" /><br />
  7.       <input type="button" id="btn_detach" value="Eliminar con detach()" />
  8.       <input type="button" id="btn_restaurar" value="Restaurar el elemento" /><p />

  9.       <div id="contenedor">

  10.           <div id="divInterior1">
  11.               Texto flotante en 'divInterior1'
  12.               <a href="#">Esto es un enlace</a>
  13.           </div>

  14.           <div id="divInterior2">
  15.               Texto flotante en 'divInterior2'
  16.               <span>Esto es un span</span>
  17.           </div>

  18.           <div id="divInterior3">
  19.               <a id="e" href="#">Esto es un enlace</a>
  20.           </div>

  21.           <div id="divInterior4">
  22.             <p id="p1" class="rojo">Esto es un párrafo</p>
  23.             <p id="p2" class="rojo">Esto es otro párrafo.</p>
  24.             <p id="p3" class="verde">Esto es un párrafo más.</p>
  25.           </div>

  26.       </div>

  27.   </body>

  28. </html>

Reemplazar elementos

El método replaceWith() permite reemplazar los elementos seleccionados con el contenido que especifiquemos.

En el siguiente ejemplo lo utilizamos para reemplazar unos determinados párrafos por etiquetas HTML 'SPAN':

EJEMPLO:

  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">

  3.   <head>
  4.     <title>InformaticaPC | DOM</title>
  5.     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

  6.     <style type="text/css">
  7.         body { background-color:lightyellow; }
  8.         span { font-weight:bold; }
  9.         .rojo { color:red; }
  10.         .verde { color:green; }
  11.     </style>

  12.     <!-- Agregamos JQuery -->
  13.     <script type="text/javascript" src="../lib/jquery-1.9.1.min.js"></script>

  14.     <script type="text/javascript">

  15.         $(document).ready(function()
  16.         {

  17.           $("#btnReemplazar").click(function() {
  18.              $(".rojo").replaceWith("<span>Este texto está en un 'SPAN'</span><br />");
  19.           });

  20.         });

  21.     </script>
  22.   </head>

  23.   <body>

  24.       <input type="button" id="btnReemplazar" value="Reemplazar" />

  25.       <p id="p1" class="rojo">Esto es un párrafo</p>
  26.       <p id="p2" class="rojo">Esto es otro párrafo.</p>
  27.       <p id="p3" class="verde">Esto es un párrafo más.</p>

  28.   </body>

  29. </html>

Obtener y recorrer elementos

Antes de explicar cómo recorrer elementos del DOM debes saber que dependiendo del método usado para acceder a los elementos podemos obtener objetos directamente del DOM o bien objetos JQuery (que a su a vez contendrá los objetos del DOM junto con otros métodos y propiedades propios).

Para seleccionar los elementos podemos hacerlo de los siguientes modos:

EJEMPLO:

  1. var elementos = $("#divContenedor1");       // De esta forma obtenemos un objeto JQuery
  2. var elementos = $("#divContenedor1").get(); // Obtenemos un array de objetos directamente del DOM

Una vez obtenidos, para recorrer los elementos usaremos:

  • $.each(): permite iterar sobre un objeto JQuery, ejecutando una función por cada elemento existente.
  • JQuery.each(): permite iterar sobre objetos y arrays de JavaScript.

Para entender mejor cómo obtener y recorrer los elementos estudia el siguiente código fuente de ejemplo:

  1.     </script>
  2.   </head>

  3.   <body>

  4.       <div id="log"> </div>

  5.       <input type="button" id="btnSeleccionarUno" value="Acceder al DIV con id 'divContenedor1'" />
  6.       <input type="button" id="btnGetUno" value="Acceder con get() al DIV con id 'divContenedor1'" />

  7.       <hr id="hr1" />

  8.       <input type="button" id="btnSeleccionarVarios" value="Acceder a los DIV con selector" />
  9.       <input type="button" id="btnGetVarios" value="Acceder a los DIV con get()" />

  10.       <div id="divContenedor1"> </div>
  11.       <div id="divContenedor2"> </div>
  12.       <div id="divContenedor3"> </div>

  13.   </body>

  14. </html>

Una vez aclarado lo anterior, el siguiente paso es conocer algunos de los métodos existentes para recorrer el árbol de elementos del DOM:

  • children(): devuelve los elementos hijo que contiene el especificado.
  • get(): usado para acceder directamente a los elementos del DOM.
  • prev() / next(): devuelven los elementos anterior y siguiente respectivamente.
  • parent(): devuelve el elemento padre del especificado.
  • parents(): devuelve los padres de un elemento en los distintos niveles dentro del árbol DOM.
  • siblings(): devuelve los elementos 'hermanos' que están al mismo nivel del especificado.

EJEMPLO:

  1.    </script>
  2.   </head>

  3.   <body>

  4.       <div id="log"> </div>

  5.       <input type="button" id="btnHermanos" value="Elementos al mismo nivel de 'Opción 2B'" />
  6.       <input type="button" id="btnHermanoSiguiente" value="Siguiente elemento al mismo nivel de 'Opción 2B'" />
  7.       <input type="button" id="btnHermanoAnterior" value="Anterior elemento al mismo nivel de 'Opción 2B'" /><br />

  8.       <input type="button" id="btnPadre" value="Obtener padre de la lista principal" />
  9.       <input type="button" id="btnHijo" value="Obtener hijos de 'Opción 3'" /><br />

  10.       <input type="button" id="btnEnlaces" value="Obtener todos los enlaces" />

  11.       <hr id="hr1" />

  12.       <div id="divContenedor1">

  13.           <ul id="principal">

  14.               <li id="opc1"><span>Opción 1</span></li>

  15.               <li id="opc2"><span>Opción 2</span>

  16.                   <ol id="sublista1">
  17.                       <li id="ol1-opc1"><span>Opción 2A</span></li>
  18.                       <li id="ol1-opc2"><span>Opción 2B</span></li>
  19.                       <li id="ol1-opc3"><span>Opción 2C</span></li>
  20.                       <li id="ol1-opc4"><span>Opción 3C</span></li>
  21.                   </ol>

  22.               </li>

  23.               <li id="opc3"><span>Opción 3</span>

  24.                   <ol id="sublista2">
  25.                       <li id="ol2-opc1"><span>Opción 3A</span></li>
  26.                       <li id="ol2-opc2"><span>Opción 3B</span></li>
  27.                       <li id="ol2-opc3"><span>Opción 3C</span></li>
  28.                   </ol>

  29.               </li>

  30.               <li id="opc4"><span>Opción 4</span></li>

  31.           </ul>

  32.       </div>

  33.       <div id="divContenedor2">
  34.           <a href="#">Enlace 1</a>
  35.       </div>

  36.       <div id="divContenedor3">
  37.           <a href="#">Enlace 2</a>
  38.       </div>

  39.   </body>

  40. </html>

Almacenar datos en elementos del DOM

Los elementos del DOM pueden ser manipulados hasta el punto de que es posible almacenar datos en ellos de forma temporal (en caso de objetos se guardan referencias a ellos).

Los métodos que utilizaremos para ello son data() (para almacenar los datos) y removeData() (para eliminarlos).

EJEMPLO:

  1.    </script>
  2.   </head>

  3.   <body>

  4.       <div id="log"> </div>

  5.       <label for="txtValor1">Escribe un valor</label>
  6.       <input type="text" id="txtValor1" value="" size="2" />

  7.       <label for="txtValor2">Escribe otro valor:</label>
  8.       <input type="text" id="txtValor2" value="" size="2" />

  9.       <hr />

  10.       <input type="button" id="btnGuardarValor" value="Guardar el valor" />
  11.       <input type="button" id="btnRestaurarValor" value="Restaurar el valor" />
  12.       <input type="button" id="btnBorrarValores" value="Borrar los valores" />

  13.       <hr />

  14.       <input type="button" id="btnGuardarObjeto" value="Guardar un objeto" />
  15.       <input type="button" id="btnRestaurarObjeto" value="Restaurar el objeto" />

  16.   </body>

  17. </html>

Publicado por:  Alberto Ayoze Castillo

Fecha de Publicación: 2017

Bibliografía

Ayoze A. (2017). Curso de programación Web. 

Recuperado de:

https://books.google.es/books?hl=es&lr=&id=698EDgAAQBAJ&oi=fnd&pg=PR11&dq=++++Manipulaci%C3%B3n+del+DOM+con+Jquery&ots=Iojr5GADx1&sig=rAD6NmK5mxQO_h3AI6StuXVErrc#v=onepage&q=Manipulaci%C3%B3n%20del%20DOM%20con%20Jquery&f=false 

Comentarios
* No se publicará la dirección de correo electrónico en el sitio web.
ESTE SITIO FUE CONSTRUIDO USANDO