Ingresar:

Rho :: Blog :: Javascript no intrusivo con jquery

May 06, 2008

user icon
Rho

Javascript no-intrusivo

En pocas palabras, javascript no-intrusivo se dice al hecho de que una página no dependa de javascript para su correcto funcionamiento. En otras palabras evitar la inclusión directa código dentro los tags, por ejemplo:

  <a href="#" click="alert('hola');">Click</a>    

jQuery

jQuery es una librería javascript/ajax que facilita de manera asombrosa el uso de javascript para desarrollo web, ¡incluso haciéndolo divertido!

Ejemplo

Directo al grano, queremos añadir un botón de cerrar a los mensajes de notificación que da nuestro sitio (mensajes de error, de alerta, etc).

¿cómo lo hacemos?

Podemos hacer uso de los selectores, y en base a estos añadir funcionalidades a ciertos elementos. Por ejemplo, supongamos que queremos hacer que todos los links externos se abran en nueva ventana sin usar el atributo target -que no valida.

Con jQuery podría ser de esta manera:

  jQuery('a[@href^="http://"]').addClass('external').attr('target', '_blank');    

Primero seleccionamos todos los tags "a" con el atributo "href" que empiezan con "http://", a todos estos elementos les añadimos la clase css "external" y el atributo "target=_blank". ¿fácil, no?

Un problema de los scripts js en las página web, es que estos se ejecuten antes de que se termina la carga completa. En jQuery se utiliza lo siguiente:

  jQuery("document").ready(function() {   // instrucciones que se ejecutaran cuando el documento cargue por completo   });    

Entonces, nuestro código mágico para hacer elementos "cerrables" es....

  jQuery(function($) {   //creamos el elemento "a"   //añadimos el atributo href   // añadimos la clase css close-button   // añadimos una acción al evento "click"   // y cuando el usuario haga "click" buscamos el nodo padre con la calse "can-close" y lo hacemos "desaparecer" xD       close = $("<a>")               .text("Close")               .attr("href", "#")               .attr("class", "close-button")               .click(function() {                   $(this).parents("can-close").fadeOut(1500);               });   // a todos los elementos con la clase "can-close"   // le añadimos el botón de cerrar   $(".can-close").prepend(close);   // end    });    

En resumen, creamos el enlace para cerrar el elemento, luego buscamos todos los elementos con la clase css "can-close" y el añadimos el botón.

Mediante esta técnica, para hacer otro elemento que se pueda cerrar, simplemente le añadimos la clase "can-close".

  <div id="algo" class="can-close">Mensaje ...</div>    

Muchos proyectos web utilizan esta técnica para hacer efectos "pluggables", añaden los selectores (id/class) correctos para poder añadir comportamientos (behaviors) arbitrarios a cualquiera de ellos.

Pueden ver el demo en: jquery1.html

Palabras clave: close, fade, javascript, jquery, webdevelopment

Enviado por Rho



Comentarios

  1. Si es bueno, pero lo mejor de todo es que hay muchos otros framework que utilizan JQuery como base y tienen buenisimos resultados, por ejemplo richfaces un framework java en jsf, incluye componentes, efectos, etc.. gestados con JQuery. Laughing

    user iconNaverus on Tuesday, 06 May 2008, 19:23 BOT # |

Debes iniciar sesión para enviar un comentario.