123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420 |
- <?php
- /*
- * To change this license header, choose License Headers in Project Properties.
- * To change this template file, choose Tools | Templates
- * and open the template in the editor.
- */
- ?>
- <div class="col-md-10 col-md-offset-1">
- <h1>Manipulando los elementos</h1>
- <p>Hay numerosas formas de manipular un elemento existente con jQuery.
- La más común es cambiar el contenido del HTML o un atributo de un elemento.
- jQuery permite de manera simple, la manipulación de estos.
- También se puede conseguir información acerca de ellos.
- A continuación veremos una lista con los métodos más comunes para conseguir información:
- </p>
- <ul>
- <li><a href="http://api.jquery.com/html/">.html()</a> – Obtiene o establece el contenido del HTML.</li>
- <li><a href="http://api.jquery.com/text/">.text()</a> – Obtiene o establece el texto</li>
- <li><a href="http://api.jquery.com/attr/">.attr()</a> – Obtiene o establece el valor de un atribuito.</li>
- <li><a href="http://api.jquery.com/width/">.width()</a> – Obtiene o establece la anchura en pixels del primer elemento de la selección como un integer.</li>
- <li><a href="http://api.jquery.com/height/">.height()</a> – Obtiene o establece la altura en pixels del primer elemento de la selección como un integer.</li>
- <li><a href="http://api.jquery.com/position/">.position()</a> – Obtiene un objeto con la información de la posición para el primer elemento de la selección, relativo a su primer ancestro posicionado.</li>
- <li><a href="http://api.jquery.com/val/">.val()</a> – Obtiene o establece el valor de un elemento dentro un formulario.</li>
- </ul>
- <h3>Getters o Setters</h3>
- <p>Cambiando los elementos es algo trivial,
- solo hay que recorder que el cambio afectará a todos los elementos de la selección.
- Si solo quieres cambiar un elemento, asegúrate de estar llamando a
- ese elemento antes de crear un método setter.
- </p>
- <pre>
- <code>
- $( "#myDiv p:first" ).html( "New <strong>first</strong> paragraph!" );
- </code>
- </pre>
- <br>
- <p>Por ejemplo vamos a ver como se consigue el valor de un input y de un
- párrafo.
- </p>
- <div>Pon algo<input type="text" name="prueba" id="inputPrueba"></div>
- <p id="parraPrueba">Esto es una prueba afjadkfsdfasdf</p>
- <div>
- <button id="getValor">Ver valor</button>
- <button id="setValor">Intercambiar valores</button>
- </div>
- <pre>
- <code>
- $$("#getValor").click(function() {
- alert($("#inputPrueba").val());
- alert($("#parraPrueba").text());
- });
- $("#setValor").click(function(){
- var inputValue = $("#inputPrueba").val();
- var pText = $("#parraPrueba").text();
- $("#inputPrueba").val(pText);
- $("#parraPrueba").text(inputValue);
- });
- </code>
- </pre>
- <br>
- <h3>Moviendo, Copiando y Eliminando Elementos</h3>
- <p>Hay un gran número de formas para mover elementos alrededor del DOM,
- pero hay dos maneras de enfocarlo:
- </p>
- <ul>
- <li>Colocar el elemento(s) seleccionado relativo a otro elemento.</li>
- <li>Colocar un elemento de manera relativa al elemento seleccionado.</li>
- </ul>
- <p>Por ejemplo, jQuery tiene los métodos “.insertAfter()” y “.after()”.
- El método “.insertAfter()” coloca el elemento(s) seleccionado(s) después del
- elemento proporcionado como argumento. Mientras el método “.after()” coloca
- el elemento proporcionado como argumento después del elemento seleccionado.
- Luego otros métodos siguen el mismo patrón como “.insertBefore()” y “.before()”,
- “.appendTo()” y “.append()”, y como “.prependTo()” y “.prepend()”.
- </p>
- <p>El método que necesitarás va a depender de como
- enfoques la manera de mover o los elementos que quieras insertar.
- Incluso de si quieres guardar una referencia al elemento.
- Si necesitas guardar la referencia del elemento que has insertado o movido
- lo mejor es usar .insertAfter(), .insertBefore(), .appendTo(), y .prependTo().
- </p>
- <div>
- <ul id="myList">
- <li>0 item de la lista</li>
- <li>1 item de la lista</li>
- <li>2 item de la lista</li>
- <li>3 item de la lista</li>
- <li>4 item de la lista</li>
- <li>5 item de la lista</li>
- <li>6 item de la lista</li>
- </ul>
- </div>
- <button id="but-appendTo">Usar appendTo</button>
- <button id="but-append">Usar append</button><br>
- <pre>
- <code>
- // Mover elementos tiene diferentes enfoques
- // Para hacer el primer item de la lista el último item
- $("#but-appendTo").click(function() {
- var li = $( "#myList li:first" ).appendTo( "#myList" );
- alert(li.text());
- });
-
- // Otro enfoque al mismo problema
- $("#but-append").click(function() {
- $( "#myList" ).append( $( "#myList li:first" ) );
- });
-
- // Podemos ver que no hay forma de acceder al item de la lista
- // que hemos movido porque vuelve a la lista
- </code>
- </pre>
- <br>
- <h3>Clonando Elementos</h3>
- <p>Métodos como “.appendTo()” mueven el elemento, pero algunas veces se
- necesita una copia del elemento. Se puede usar por ejemplo “.clone()”.
- </p>
- <p>Para pasar además datos relativos y eventos al elemento clonado, se tendrá
- que usar "true" como argumento.
- </p>
- <div>
- <ul id="myList2">
- <li>0 item de la lista</li>
- <li>1 item de la lista</li>
- <li>2 item de la lista</li>
- <li>3 item de la lista</li>
- <li>4 item de la lista</li>
- <li>5 item de la lista</li>
- <li>6 item de la lista</li>
- </ul>
- </div>
- <button id="clone-appendTo">Usar appendTo</button><br>
- <br>
- <pre>
- <code>
- // Primero se hace una copia del elemento
-
- // Y luego se pone al final de la lista
- $("#clone-appendTo").click(function() {
- $( "#myList2 li:first" ).clone().appendTo( "#myList2" );
- });
- </code>
- </pre>
- <br>
-
- <h3>Eliminando Elementos</h3>
- <p>Hay dos formas de eliminar elementos de la página:</p>
- <ul>
- <li><a href=”http://api.jquery.com/remove/” >.remove()</a>:
- Elimina el elemento permanentemente de la página web. Pero devuelve
- el elemento eliminado sin los datos y eventos asociados a él por si
- se quiere devolverlo a la web.</li>
- <li><a href=”http://api.jquery.com/detach/”>.detach()</a>:
- Elimina el elemento permanentemente de la página web. Pero devuelve
- el elemento eliminado con los datos y eventos asociados a él por si
- se quiere devolverlo a la web. </li>
- <li><a href="http://api.jquery.com/empty/">.empty()</a>:
- Elimina el contenido del elemento dejándolo vacío.</li>
- </ul>
- <div id="insertParra">
- <h4>.remove()</h4>
- <p class="yellow">¿que pasa?</p>
- saecio
- <p class="yellow">como vas</p>
- </div>
- <div>
- <button id="use-remove">Usar remove()</button>
- <button id="add-remove">Volver a añadir elementos</button>
- </div><br>
- <pre>
- <code>
- var parra;
- $( "#use-remove" ).click(function() {
- parra = $( ".yellow" ).remove();
- });
- $( "#add-remove" ).click(function() {
- $( "#insertParra" ).append(parra);
- });
- </code>
- </pre>
- <br>
- <h4>.detach()</h4>
- <p>Para conservar los eventos asociados al elemento es mejor usar
- “.detach()”. Pues se puede manipular
- el árbol DOM mientras se mantienen todos los eventos y datos asociados
- a los elementos.
- </p>
- <div id="insertParra2">
- <p class="yellow2">¿que pasa?</p>
- saecio
- <p class="yellow2">como vas</p>
- </div>
- <div>
- <button id="use-detach">Usar detach()</button>
- <button id="add-detach">Volver a añadir elementos</button>
- </div><br>
- <br>
- <pre>
- <code>
- var parra2;
- $( "#use-detach" ).click(function() {
- parra2 = $( ".yellow2" ).detach();
- });
- $( "#add-detach" ).click(function() {
- $( "#insertParra2" ).append(parra2);
- });
- </code>
- </pre>
- <br>
- <h4>.empty()</h4>
- <p>Este método eliminar todo los hijos y descendientes dentro del elemento
- y además si existe texto también lo elimina.
- </p>
- <div id="insertParra3">
- <p class="yellow3">¿que pasa?</p>
- saecio
- <p class="yellow3">como vas</p>
- </div>
- <div>
- <button id="use-empty">Usar empty()</button>
- <button id="add-empty">Volver a añadir elementos</button>
- </div><br>
- <br>
- <pre>
- <code>
- var parra3;
- $( "#use-empty" ).click(function() {
- parra3 = $( ".yellow3" ).empty();
- });
- $( "#add-empty" ).click(function() {
- $( "#insertParra3" ).append(parra3);
- });
- </code>
- </pre>
- <br>
- <h3>Creando nuevos elementos</h3>
- <p>
- jQuery ofrece de manera trivial una forma de crear nuevos elementos
- e insertarlos con el método que siempre hemos visto $(). Existen dos
- métodos de crear elementos de manera interactiva y fácil.
- </p>
- <pre>
- <code>
- // Crear elementos nuevos desde un string HTML
- $( "<p>This is a new paragraph</p>" );
- $( "<li class="new">new list item</li>" );
- </code>
- </pre>
- <br>
- <pre>
- <code>
- // También se puede crear como un objeto jQuery
- $( "<a/>", {
- html: "This is a <strong>new</strong> link",
- "class": "new",
- href: "foo.html"
- });
- </code>
- </pre>
- <br>
- <p>Se puede ver que la propiedad Class está quoteada mientras que “html”
- y “href” no. Los nombres de las propiedades no suelen estar quoteadas
- a no ser que sean <a href="https://mathiasbynens.be/notes/reserved-keywords">palabras reservadas</a>. Una vez creado el elemento,
- no se inserta inmediatamente a la página, hay diversas formas para
- insertar un elemento que vamos a ver.
- </p>
- <pre>
- <code>
- var myNewElement = $( "<p>New element</p>" );
- myNewElement.appendTo( "#content" );
- $( "ul" ).last().after( myNewElement.clone() ); // Clona el elemento p y ahora existen dos
- </code>
- </pre>
- <br>
- <p>
- El elemento creado no necesita guardarse en una variable porque
- puedes llamar al método para añadir el elemento directamente.
- También puede crear un elemento mientras se añade a la página, pero
- entonces no tendrás una referencia para el elemento creado.
- </p>
-
- <p>
- La sintaxis para añadir nuevos elementos es fácil, pero hay que
- tener cuidado con el rendimiento de añadir elementos al árbol DOM de
- manera repetida. La manera más eficiente de insertar muchos elementos
- es crear un solo string con toda la información dentro y entonces
- insertarlo en vez de ir insertando los elementos uno a uno. Se puede
- usar un array o un String.
- </p>
- <pre>
- <code>
- //Como array
- var myItems = [];
- var myList = $( "#myList" );
-
- for ( var i = 0; i < 100; i++ ) {
- myItems.push( "<li>item " + i + "</li>" );
- }
-
- myList.append( myItems.join( "" ) );
- </code>
- </pre>
- <br>
- <pre>
- <code>
- //Como String
- var myItems = "";
- var myList = $( "#myList" );
-
- for ( var i = 0; i < 100; i++ ) {
- myItems += "<li>item " + i + "</li>";
- }
-
- myList.append( myItems);
- </code>
- </pre>
- <br>
- <h3>Añadir o modificar el CSS</h3>
- <p>jQuery nos da la oportunidad de mediante el método css() modificar
- las propiedades de un elemento seleccionado de manera rápida y fácil.
- </p>
- <p class="parraCSS">Este párrafo puede mutar</p>
- <p class="parraCSS">Este también</p>
- <pre>
- <code>
- $( ".parraCSS" )
- .on( "mouseenter", function() {
- $( this ).css({
- "background-color": "yellow",
- "font-weight": "bolder"
- });
- })
- .on( "mouseleave", function() {
- var styles = {
- backgroundColor : "#ddd",
- fontWeight: ""
- };
- $( this ).css( styles );
- });
- </code>
- </pre>
- <br>
- <h3>Manipulando atributos</h3>
- <p>La manipulación de atributos dentro de jQuery es bastante amplia.
- Los cambios básicos son simples, pero el método attr() permite una
- compleja manipulación si se desea. Puede obtener un valor de un
- atributo o establecerlo. Para usarlo se necesita usar dos argumentos,
- el tipo de atributo y el valor del atributo.
- </p>
- <a id="duck" href="https://duckduckgo.com/">Ir a Duckduckgo</a>
- <div>
- <button id="changeHref">Cambiar link</button>
- </div>
- <pre>
- <code>
- $("#changeHref").click(function() {
- $("#duck").attr( "href", "https://www.mozilla.org" );
- });
- </code>
- </pre>
- <br>
- <p>Ahora vamos a cambiarle varios atributos</p>
- <a id="duck2" href="https://duckduckgo.com/">Ir a Duckduckgo</a>
- <div>
- <button id="changeAtt">Cambiar link</button>
- </div><br>
- <pre>
- <code>
- //Esto es CSS
- #google {
- color:red;
- }
-
- $("#changeAtt").click(function() {
- $("#duck2").text("Ir a google");
- $("#duck2").attr({
- href: "https://www.google.es",
- id: "google",
- });
- });
- </code>
- </pre>
- <br>
- <h4>Método removeAttr()</h4>
- <p>También se puede eliminar un atributo de un elemento, por ejemplo se puede
- eliminar el título de una página</p>
- <a id="google2" href="https://www.google.es">Ir a Google</a><br>
- <button id="removeHref">Quitar el enlace</button><br>
- <pre>
- <code>
- $("#removeHref").click(function() {
- $("#google2").removeAttr("href");
- });
- </code>
- </pre>
- <br>
- <h3>Métodos addClass() y removeClass()</h3>
- <p>Este tipo de métodos suelen ir juntos pues al añadir una clase se suele
- quitar otra.
- </p>
- <p id="specialBig" class="specialBig">Este párrafo puede hacerse más grande</p>
- <pre>
- <code>
- $("#specialBig").hover(function() {
- $(this).removeClass("specialBig").addClass("specialLittle");
- },
- function() {
- $(this).removeClass("specialLittle").addClass("specialBig");
- });
- </code>
- </pre>
- <br>
- </div>
- <script src="../jQueryProject/assets/js/dom.js"></script>
|