novembro 2016
Ext JS es un framework de JavaScript que ofrece una gran cantidad de widgets de interfaz de usuario cross-browser (o sea que es soportado por varios navegadores y es side-client o sea del lado del cliente). El núcleo de Ext JS es el diseño de componentes integrados, los cuales se pueden ampliar fácilmente para satisfacer nuestras necesidades.

Preparándonos

Podemos descargar la última versión del framework Ext JS en Descarga Ex JS, sección Ext JS.
Para Nuestro Ejemplo descargaremos la versión de prueba de este framework:
[img url="https://sites.google.com/site/provasfatec/imagenes/descarga_ex_js_1.png" width="600" height="600" rel="Eligiendo La Versión No Paga" src="https://sites.google.com/site/provasfatec/imagenes/descarga_ex_js_1.png?attredirects=0&d=1"/] [img url="https://sites.google.com/site/provasfatec/imagenes/descarga_ex_js_2.png" width="600" height="480" rel="Eligiendo Ext JS" src="https://sites.google.com/site/provasfatec/imagenes/descarga_ex_js_2.png"/] [img url="https://sites.google.com/site/provasfatec/imagenes/descarga_ex_js_3.png" width="600" height="480" rel="Rellenando nuestros Datos" src="https://sites.google.com/site/provasfatec/imagenes/descarga_ex_js_3.png"/] [img url="https://sites.google.com/site/provasfatec/imagenes/descarga_ex_js_4.png" width="600" height="480" rel="Clicando en Descarga" src="https://sites.google.com/site/provasfatec/imagenes/descarga_ex_js_4.png"/] [img url="https://sites.google.com/site/provasfatec/imagenes/descarga_ex_js_5.png" width="600" height="480" rel="Nos enviaran un mensaje a nuestro correo electrónico" src="https://sites.google.com/site/provasfatec/imagenes/descarga_ex_js_5.png"/] [img url="https://sites.google.com/site/provasfatec/imagenes/descarga_ex_js_6.png" width="600" height="480" rel="Realizando la descarga de 116 MB aproximadamente" src="https://sites.google.com/site/provasfatec/imagenes/descarga_ex_js_6.png"/]
Luego de la descarga, estaremos listos para construir un diseño clásico de Ext JS con dos columnas y un acordeón.
También podríamos preparar un simple archivo HTML ajax/center-content.html para probar la funcionalidad de Ajax:

...
<body>
<p>Center Content</p>
</body>
...

Manos Al Código

  • Primer Paso: Estamos Listos para la codificación!. En primer lugar, incluiremos los archivos obligatorios como: los archivos de biblioteca CSS y Ext JS.

<link rel="stylesheet" href="css/ext-all.css" />
<script src="js/ext-base.js"></script>
<script src="js/ext-all.js"></script>

  • Segundo Paso: Continuaremos con la función onReady, que ejecutará nuestro script:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Creando Componentes con Ext JS</title>
<link rel="stylesheet" type="text/css" href="css/ext-base.css" />
<script type="text/javascript" src="js/ext-base.js"></script>
<script type="text/javascript" src="js/ext-all.js"></script>
<script type="text/javascript">

Ext .onReady(function(){
Ext.state.Manager.setProvider(new Ext.state.CookieProvider());

var viewport = new Ext.Viewport({
layout:'border',
items:[{
region:'west',
id:'west-panel',
title:'West',
split:'true',
width:'200',
margins:'5 0 5 5',
cmargins:'5 5 5 5',
layout:'accordion',
layoutConfig:{
animate:true
},
items:[{
html:'Navigation content',
title:'Navigation',
},{
title:'settings',
html:'Settings Content'
}]
},{
region:'center',
margins:'5 5 5 0',
layout:'column',
autoLoad:{
url: 'ajax/center-content.html',
method:'GET'
}
}]
});
});
</script>
</head>

<body>

<script type="text/javascript" src="js/examples.js"></script><!-- Ejemplos -->

</body>
</html>

  • Nuestro resultado se parece a lo siguiente:

¿Cómo esto trabaja?

  • Primero: Debemos saber que Ext JS está construido para facilitar la vida de los desarrolladores. Como se puede ver en el código, hemos creado un diseño con un objeto JavaScript simple. Tenemos un "Viewport" con dos artículos. Uno está situado a la izquierda (región: West 'Oeste') y el segundo a la derecha (región: East 'Este'). No tenemos que cuidar el CSS en este caso. Todo es manejado directamente por Ext JS a través de nuestras variables como ancho (width), márgenes (margins), cmargins, etc. La propiedad del layout es realmente poderosa. El diseño interior en el lado West 'oeste' es un acordeón con los elementos de navegación y su configuración. En la columna central, podemos ver el contenido 'Center Content' que mediante la propiedad html hemos cargado.
Infelizmente este framework tiene una licencia de 30 días. Si bien es cierto vale la pena mismo comprarla, ya que es muy poderosa y enteramente interactiva; depende ya de su poder adquisitivo y sus ganas de seguir con ella que le haran tomar una decisión. Espero haber sido exacto en mi explicación con este ejemplo básico de este poderoso framework. Buena Suerte!


[tab] [content title="Descarga código completo"]Descarga Aplicativo con Ext_JS[/content] [content title="Ext JS"]Para descargar el framework Ext JS en su última versión entra en este link:Descarga Ext JS, luego deberas darle click a la versión de prueba o compra; realizando un cadastro previo podrás recibir en tu e-mail la versión de prueba o compra, según tu decisión![/content] [/tab]
JQuery UI se construye a partir de los complementos de interacción central de jQuery.
Como un framework de alto nivel, hace la creación de efectos y animación fácil para cada desarrollador. Ahora vamos a construir un menu con pestañas usando jQuery UI.

Preparándonos

  • Primer Paso: En primer lugar, tenemos que descargar la biblioteca jQuery desde el sitio  Descarga jQuery.
  • Segundo Paso: Luego, podemos descargar la biblioteca jQuery UI desde Descarga jQuery UI.
    • En esta página, podemos descargar módulos específicos o toda la biblioteca; 
    • tambien podemos seleccionar el tema de nuestro gusto 
    • o crear el nuestro, con una configuración de tema avanzada. Pero por ahora, seleccionaremos toda la biblioteca con el tema ui-lightness, para este ejemplo!. Observe las 3 imágenes a continuación y realize esta descarga!
* Eligiendo la Versión del jQuery UI:
[img url="https://sites.google.com/site/provasfatec/arquivos/descargando_jqueryui.png" width="600" height="600" rel="Eligiendo La Versión" src="https://sites.google.com/site/provasfatec/arquivos/descargando_jqueryui.png"/]
* Eligiendo el Tema ui-lightness:
[img url="https://sites.google.com/site/provasfatec/arquivos/descargando_jqueryui2.png" width="600" height="480" rel="Eligiendo el Tema" src="https://sites.google.com/site/provasfatec/arquivos/descargando_jqueryui2.png"/]
* Clicando en Descargar:
[img url="https://sites.google.com/site/provasfatec/arquivos/descargando_jqueryui3.png" width="600" height="480" rel="Descargando" src="https://sites.google.com/site/provasfatec/arquivos/descargando_jqueryui3.png"/]

Manos Al Código

  • Primer Paso: Estando Listos para la codificación. Empecemos con la parte del código HTML. Esta parte definirá un elemento de navegación con tres pestañas, veamos:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Menú con Pestañas</title>
</head>

<body>

<div id="navigation">
<ul>
<li><a href="#tabs1">Home</a></li>
<li><a href="#tabs2">Nuestros Libros</a></li>
<li><a href="ajax/shop.html">Shopping</a></li>
</ul>
<div id="tabs1">
<p>Contenido 1</p>
</div>
<div id="tabs2">
<p>Contenido 2</p>
</div>
</div>

</body>
</html>
  • Segundo Paso: Una vez que el código HTML está listo, podemos continuar incluyendo los estilos CSS y los estilos JavaScript CSS después de la etiqueta <head>, como se muestra en el siguiente código:

<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Menú con Pestañas</title>
<!--CSS jQuery UI-->
<link href="css/jquery-ui.css" rel="stylesheet" />
<!--Fin CSS jQuery UI-->
</head>

  • Tercer PasoAñadiremos JavaScript antes de cerrar la etiqueta <body>:

<script src="js/jquery-3.1.1.min.js"></script>
<script src="js/jquery-ui.min.js"></script>
<script>
$(document). ready(function(){
$('#navigation').tabs();
});
</script>
</body>

  • Nuestro resultado se parece a lo siguiente:

¿Cómo esto trabaja?

  • Primero: la interfaz de usuario jQuery descargada contiene todo el contenido CSS del tema seleccionado (jquery-ui.css) que nos proporciona el estilo a nuestro aplicativo online. Todo lo que necesitamos hacer es incluirlo en la etiqueta <head> como lo hicimos en el segundo paso del proceso.
  • SegundoDespués de CSS, incluimos jQuery y la biblioteca jQuery UI, esto lo vimos en el tercer paso de nuestro proceso. Teniendo hecho este paso conseguiremos que nuestro aplicativo consiga accesar sus controles y pueda correr tranquilamente! 
  • Tercero: La parte donde actuaremos para que el código JavaScript se desarrole es realmente simple:

$('#navigation').tabs();

Es importante ajustar la estructura HTML requerida. Cada hipervínculo está orientado al contenido HTML en las etiquetas <div> seleccionadas.
Para crear una relación entre ellos usaremos #id(ejemplo: href=#tabs1) en cada hipervínculo y el ID de la etiqueta <div> seleccionada que tambien será tabs1 por ejemplo.
Hay una excepción en la tercera pestaña, que carga los datos solicitados a través de AJAX. En este caso, no definimos ningún área de destino, ya que se creará automáticamente. Como puedes ver, usar el Ajax en jQuery UI es realmente fácil y cómodo.

[tab] [content title="Descarga código completo"]Descarga Menu por Pestañas[/content] [content title="jQuery 3.1.1"]Para descargar el jQuery en su última versión entra en este link:Descarga jQuery, luego dale click a la más reciente descarga, en este momento es la versión 3.1.1[/content] [content title="jQuery UI"]Para descargar el jQuery UI entra en este link:Descarga jQuery, luego dale click a la más reciente versión, elije tu tema preferido y dale a download![/content] [/tab]

mo

Como es sabido jQuery es un framework de desarrollo que nos permite usar JavaScript en nuestro documento HTML. Ahora vamos a construir un menú de navegación sencillo con las características básicas de jQuery.
Antes de que podamos comenzar, necesitamos incluir la última biblioteca de jQuery. Podemos descargarla desde la sección de descargas en Descargando jQuery, luego la guardaremos en nuestra carpeta JavaScript llamada js, en la raíz de nuestro documento HTML, por ejemplo, miscapu. Si tienes problemas para entender esta parte, te recomiendo ir a la parte final de este artículo y hacer la descarga del código completo.


Manos al código!

Ahora, podemos empezar a codificar nuestra página "menu_simple.html" y la colocaremos en la carpeta "miscapu".

Ahora, vamos a explicar lo que haremos a continuación:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Menú Simple Usando jQuery</title>
</head>

<body>
<ul id="navigation">
<li id="home"><a href="#">Home</a></li>
<li class="active"><a href="#">Nuestros Libros</a></li>
<li><a href="#">Shop</a></li>
<li><a href="#">Blog</a></li>
</ul>
<div id="placeHolder">
Este es Nuestro Primer Proyecto
</div>
<script src="js/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
$('#navigation li a') .each(function() {
var $item = $(this);
$item.on('click', function(event){
event.preventDefault();
var title = $item.html();
var html = title + ' Fué Seleccionado.'
$('#placeHolder').html(html);
});
});
});
</script>
</body>
</html>


Ahora, vamos a explicar lo que hemos hecho en el fragmento de código anterior:
  • Primero que nada la idea principal de nuestro script es encontrar cada hiperenlace "<a>" en el documento, evitando su funcionalidad por defecto y a cambio debe mostrar el contenido del hipervínculo en nuestro elemento placeHolder.
  • Desde el principio, comenzamos con doctype y el diseño HTML principal. 
  • El cuerpo de la página contiene un elemento #navigation y un elemento #placeHolder para el contenido dinámico. 
  • La parte más importante para la funcionalidad jQuery es incluir nuestra biblioteca jQuery: Vamos a colocarla antes de la etiqueta de cierre <body>. Esto permitirá que el HTML de la página se cargue primero.
El signo del dólar $ () representa un alias para la función de fábrica de jQuery (). Dentro de esta función podemos utilizar todos los selectores CSS como ID, clase o nombres de etiqueta exactos. Por ejemplo:
  • $ ( 'a'): Selecciona todos los hipervínculos de nuestro documento.
  • $ ( '# myID'): Selecciona el elemento con este ID.
  • $ ( '. myID'): Selecciona todos los elementos con esta clase (class).
En nuestro caso, estamos seleccionando todos los hipervínculos en el "navigation <div>" y luego definiendo su propia funcionalidad con un controlador de eventos para eventos de clic:


$item.on('click',function(event){  
// evita la funcionalidad por defecto del hipervínculo <a>
event.preventDefault();
});

Y como último paso de nuestro ejemplo, creamos el "var title" y la cadena HTML, que va al placeHolder:

var title = $(this).html;
var html = title + ' fué seleccionado.';
$('#placeholder').html(html);
<br />
El ejemplo anterior es realmente simple. Pero hay mucho más que jQuery puede ofrecer para nosotros. Esto incluye selectores especiales, efectos fantásticos, manipulación DOM o la no menos conocida funcionalidad AJAX. En este menú creado por ejemplo podríamos especificar nuestros eventos para movimientos del mouse sustituyendo una parte código por el evento que nos parezca más interezante!, veamos como hacer esto:
  • 1er Paso: Conoceremos los eventos que podríamos usar aquí en este ejemplo:
    • dblclickConecta/activa el evento de doble clic.
    • mouseoverEjecutar la acción proyectada JavaScript al mover el puntero del ratón sobre una imagen ó un elemento html.
    • Los eventos son muchos pero realizando estos dos ustedes tendrán una idea de como intentar con los demás, les dejo un link donde encontraran más eventos: Eventos jQuery
  • 2o paso: Modificamos el método on (), el cual asigna uno o más controladores de eventos para los elementos seleccionados y los elementos secundarios. Entonces procedemos a la modificación y posterior realización del efecto:

[tab] [content title="Descarga el código completo de este Artículo"]Descarga Menu_simple.html[/content] [content title="Descarga jQuery"]Para descargar el jQuery entra en este link:Descarga jQuery, luego dale click a la más reciente descarga, en este momento es la versión 3.1.1[/content] [/tab]


Como la comparación de código mostrada en el Artículo Anterior, el código de jQuery es típicamente más corto y más claro que su equivalente básico de JavaScript. Sin embargo, esto no significa que siempre escribiremos código que esté libre de errores, o que forma intuitiva entenderemos lo que está sucediendo en nuestras páginas en todo momento. Nuestra experiencia de codificación jQuery será mucho más cómoda con la ayuda de herramientas de desarrollo estándar.
Herramientas de desarrollo de alta calidad están disponibles en todos los navegadores modernos. Podemos sentirnos libres de usar el ambiente que es más cómodo para nosotros. Las opciones incluyen:
  • Las herramientas de desarrollo de Internet Explorer: 
http://msdn.microsoft.com/en-us/library/dd565628.aspx
  • El Inspector Web de Safari: 
http://developer.apple.com/technologies/safari/developer-tools. html
  • Las herramientas para desarrolladores de Chrome: 
http://code.google.com/chrome/devtools/
  • Firebug para Firefox: 
http://getfirebug.com/
Cada uno de estos kits de herramientas ofrecen características de desarrollo similares, incluyendo:
  • La capacidad de explorar y modificar aspectos del DOM
  • Investigar la relación entre el CSS y su efecto en la presentación de la página
  • Rastreo conveniente de la ejecución de secuencias de comandos mediante métodos especiales
  • Pausar la ejecución de secuencias de comandos en ejecución e inspeccionar los valores de las variables
Aunque los detalles de estas características varían de un navegador a otro, los conceptos generales permanecen constantes. En este site, algunos ejemplos requerirán
el uso de uno de estos conjuntos de herramientas; Usaremos Firebug para estas demostraciones, pero las herramientas de desarrollo para otros navegadores son buenas alternativas tambien.

Firebug

Las instrucciones actualizadas para instalar y usar Firebug se pueden encontrar en la página principal del proyecto en http://getfirebug.com/. La herramienta está muy involucrada que no se podría explorar con gran detalle aquí, pero un test de algunas de las características más relevantes nos será útil.
Tomando en cuenta el Navegador Mozilla Firefox y su complemento Firebug, así como el ejemplo comentado en el Artículo Anterior, veamos:
  • Cuando Firebug es activado, aparece un nuevo panel que ofrece información sobre la página actual. En la pestaña HTML predeterminada de este panel, podemos ver una representación de la estructura de la página en el lado izquierdo y detalles del elemento seleccionado (como las reglas CSS que se aplican a él) en el lado derecho. Esta pestaña es especialmente útil para investigar la estructura de la página y solucionar problemas de CSS, como se muestra en la siguiente captura de pantalla:

Ahora que hemos cubierto la gama de funciones disponibles para nosotros con jQuery, podemos examinar cómo poner la biblioteca en acción. Para empezar, necesitamos una copia de jQuery.

Descargando jQuery

No se requiere instalación. Para usar jQuery, solo necesitamos una copia pública del archivo, si esa copia está en un sitio externo o el nuestro. Como JavaScript es un lenguaje interpretado, no hay ninguna compilación o fase de construcción para la cual preocuparse. Siempre que necesitamos una página para tener jQuery disponible, simplemente nos referiremos a la ubicación del archivo desde un elemento <script> en el documento HTML.
El sitio oficial de jQuery (http://jquery.com/) siempre tiene la versión más actualizada y estable de la biblioteca, que se puede descargar directamente desde la página principal del sitio. Varias versiones de jQuery pueden estar disponibles en cualquier momento; la versión más apropiada para nosotros como desarrolladores de sitios será la última versión sin comprimir de la biblioteca. Esta puede ser reemplazada por una versión comprimida en entornos de producción.
Como la popularidad de jQuery ha crecido, las empresas han vuelto al archivo libremente disponible a través de sus redes de distribución de contenido (CDN). 
Lo más notable es que Google (http://code.google.com/apis/ajaxlibs/documentation/) y Microsoft (http://www.asp.net/ajax/cdn) ofrecen el archivo en poderosos servidores de baja latencia distribuidos en todo el mundo para una descarga rápida independientemente de la ubicación del usuario.
Mientras que una copia CDNhosted de jQuery tiene ventajas de velocidad debido a la distribución del servidor y el almacenamiento en caché, el uso de una copia local  puede ser conveniente durante el desarrollo. A lo largo de este libro usaremos una copia del archivo almacenado en nuestro propio sistema, que nos permitirá ejecutar nuestro código, ya sea que esté conectado a Internet o no. 

Configurando jQuery En Un Documento HTML

Hay tres piezas para la mayoría de los ejemplos de uso de jQuery: el documento HTML, archivos de estilo CSS y archivos JavaScript para actuar en él. Para nuestro primer ejemplo, utilizaremos una página con un extracto de uno de nuestro artículos que tiene varias clases aplicadas a partes de la misma. Esta página incluye una referencia a la última versión de la librería jQuery, que hemos descargado, renombrada jquery.js, y esta ubicada en nuestro directorio de proyectos local, de la siguiente manera:
<!DOCTYPE html>
<html lang="es">

<head>
<meta charset="utf-8">
<title>Textos con fondo y sin fondo</title>

<link rel="stylesheet" href="01.css">

<script src="jquery.js"></script>
<script src="01.js"></script>
</head>
<body>
<h1>Texto Con Fondo y Sin Fondo</h1>
<div>Por Miguel Santisteban</div>

<div class="chapter" id="chapter-1">
<p>
Este es un texto sin fondo
</p>
<div class="poem">
<h3 class="poem-title">Texto Con Fondo</h3>
<div class="poem-stanza">
<div>
Texto Con Fondo
</div>
<div>
Texto Con Fondo
</div>
<div>
Texto Con Fondo
</div>
<div>
Texto Con Fondo
</div>
</div>
</div>
<p>Texto Sin Fondo
</p>
<div class="poem">
<h3 class="poem-title">TEXTO CON FONDO 2</h3>
<div class="poem-stanza">
<div>
Texto Con Fondo
</div>
<div>
Texto Con Fondo
</div>
<div>
Texto Con Fondo
</div>
<div>
Texto Con Fondo
</div>
</div>
</div>
</div>
</body>
</html>

Rutas de los Archivos

 El diseño real de los archivos en el servidor no importa. Las referencias de un archivo a otro solo necesitan ser ajustados para coincidir con la organización que elegimos.
En la mayoría de los ejemplos de este site, usaremos caminos relativos para referenciar archivos (../images/foo.png) en lugar de caminos absolutos (/ images / foo.png).
Esto permitirá que el código se ejecute localmente sin la necesidad de un servidor web.
Inmediatamente después del preámbulo HTML normal, se carga la hoja de estilo. Para este ejemplo, utilizaremos lo siguiente:
body {  
background-color: #fff;
color: #000;
font-family: Helvetica, Arial, sans-serif;
}
h1, h2, h3 {
margin-bottom: .2em;
}
.poem {
margin: 0 2em;
}
.highlight {
background-color: #ccc;
border: 1px solid #888;
font-style: italic;
margin: 0.5em 0;
padding: 0.5em;
}
Después de que se hace referencia a la hoja de estilo, se incluyen los archivos JavaScript. Es importante que la etiqueta de script para la biblioteca jQuery se coloque antes de la etiqueta para nuestros scripts personalizados; de lo contrario, el marco jQuery no estará disponible cuando nuestro código intente hacer referencia a él.
A lo largo del resto de este tutorial, sólo se imprimirán las partes relevantes de los archivos HTML y CSS. Los archivos en su totalidad estaran disponibles en el link de descarga suministrado al final de cada Artículo.
Ahora tenemos una página que se parece a la siguiente captura de pantalla:

Usaremos jQuery para aplicar un nuevo estilo al texto.
Este ejemplo es para demostrar un uso simple de jQuery. En situaciones del mundo real, este tipo de estilo podría ser realizado únicamente con CSS.

Adicionando nuestro código jQuery:

Nuestro código personalizado aparecerá en el segundo, actualmente vacío, archivo JavaScript que incluimos desde el HTML usando <script src = "01.js"> </ script>. Para este ejemplo, sólo necesitamos tres líneas de código, de la siguiente manera:
$(document).ready(function() {  
$('div.poem-stanza').addClass('highlight');
});

Encontrando el Texto a utilizar por jQuery:

La operación fundamental en jQuery es seleccionar una parte del documento. Esto se hace con la función $ (). Normalmente, se necesita una cadena como parámetro, que puede contener cualquier expresión del selector CSS. En este caso, queremos encontrar todos los elementos <div> en el documento que tienen la clase de "poem" aplicada a ellos, por lo que el selector es muy simple. Sin embargo, cubriremos opciones mucho más sofisticadas a lo largo del Tutorial. Pasaremos por muchas formas de localizar partes de un documento en los próximos tutoriales.
Cuandoes llamada la función $ (), esta devuelve una nueva instancia de objeto jQuery, que es el bloque básico con el que trabajaremos a partir de ahora. Este objeto encapsula cero o más elementos DOM, y nos permite interactuar con ellos de muchas maneras diferentes. En este caso, deseamos modificar la apariencia de estas partes de la página, y lo lograremos cambiando las clases aplicadas al texto.

Inyectando la nueva clase

El método .addClass (), como la mayoría de los métodos de jQuery, se denomina auto-descriptivo; esta aplica una clase CSS a la parte de la página que hemos seleccionado. Su único parámetro es el nombre de la clase a añadir. Este método y su contraparte, .removeClass (), nos permitirán observar fácilmente jQuery en acción mientras exploramos las diferentes expresiones selectoras disponibles para nosotros. Por ahora, nuestro ejemplo simplemente agrega la clase highlight, que nuestra hoja de estilo ha definido como texto en cursiva con un fondo gris y un borde.
Tenga en cuenta que no es necesario iterar(insistir) para agregar la clase a todas las estrofas del texto. Como hemos comentado, jQuery utiliza iteración implícita dentro de métodos como .addClass(), por lo que una sola llamada de función es todo lo que se necesita para alterar todas las partes seleccionadas del documento. 
 

Ejecutando el Código

Tomados juntos, $ () y .addClass () son suficientes para lograr nuestro objetivo de cambiar la apariencia del texto. Sin embargo, si esta línea de código se inserta solo en el encabezado del documento, no tendrá ningún efecto. El código JavaScript generalmente se ejecuta tan pronto como se encuentra en el navegador, y en el momento en que se está procesando el encabezado, no hay ningún código HTML disponible para el estilo. Debemos retrasar la ejecución del código hasta que el DOM esté disponible para nuestro uso.
Con la construcción $ (document) .ready (), jQuery nos permite programar llamadas de función para disparar una vez que se carga el DOM, sin necesariamente esperar a que las imágenes se procesen completamente. Si bien esta programación de eventos es posible sin la ayuda de jQuery, $(document) .ready() proporciona una solución de navegación cruzada especialmente elegante que: 
  • Utiliza las implementaciones de DOM nativas del navegador cuando están disponibles y agrega un controlador de eventos window.onload como red de seguridad.
  • Permite múltiples llamadas a $(document) .ready() y las ejecuta en el orden en que se les llama
  • Ejecuta las funciones pasadas por $ (document) .ready () incluso si se agregan después de que el evento del navegador ya haya ocurrido
  • Gestiona la programación de eventos de forma asincrónica para permitir que los scripts lo retrasen si es necesario
  • Simula un preparado evento DOM en algunos navegadores más antiguos comprobando repetidamente la existencia de un método DOM que normalmente se encuentra disponible al mismo tiempo que el DOM
El parámetro del método .ready () puede aceptar una referencia a una función ya definida, como se muestra en el fragmento de código siguiente: 

function addHighlightClass()  {
$('div.poem-stanza').addClass('highlight');
}

$(document).ready(addHighlightClass);


El método también puede aceptar una función anónima (a veces también llamada función lambda), de la siguiente manera: 
$(document).ready(function() {
$('div.poem-stanza').addClass('highlight');
});
 
Este lenguaje de función anónimo es conveniente en el código jQuery para los métodos que toman una función como un argumento cuando esa función no es reutilizable. Además, el cierre que crea puede ser una herramienta avanzada y poderosa. Sin embargo, también puede tener consecuencias no deseadas y ramificaciones en el uso de la memoria, si no se trata con cuidado. 

El Producto Final

Ahora que nuestro JavaScript está en su lugar, la página se ve similar a la siguiente captura de pantalla:
El texto de class "poem-stanza" está ahora en cursiva y encerrado en cajas, como se especifica en la hoja de estilo 01.css, debido a la inserción de la clase highlight por el código JavaScript.

 Simple JavaScript vs jQuery

Incluso una tarea tan simple como esto puede ser complicada sin jQuery a nuestra disposición. En JavaScript, podemos agregar la clase resaltada como se muestra en el siguiente fragmento de código:

window.load = function (){
var divs = document.getElementsByTagName('div');
for(var i = 0; i < div.lenght; i++){
if (hasclass(divs[i], 'poem-stanza')
&& !hasclass(divs[~i], 'highlight') ){
divs[i].className + = 'highlight';
}
}
function hasclass (elem, cs){
var reClass = new RegExp('' + '');
return reClass.test('' + elem.ClassName + '');
}
};

A pesar de su longitud, esta solución no maneja muchas de las situaciones que jQuery cuida por nosotros, como las siguientes:
• Respetar adecuadamente a otros controladores de eventos window.onload,
• Actuar tan pronto como el DOM esté listo,
• Optimización de la recuperación de elementos y otras tareas con métodos DOM modernos.

 
Podemos ver que nuestro código basado en jQuery es más fácil de escribir, más fácil de leer y más rápido de ejecutar que su simple JavaScript equivalente.

Con el resurgimiento del interés en HTML dinámico llega una proliferación de Frameworks de JavaScript. Algunos son especializados, centrándose en sólo una o dos de las tareas anteriores. Otros intentan catalogar todos los comportamientos y animaciones posibles, y atienden todos estos pre-empaquetados. 
Para mantener la amplia gama de características descritas anteriormente mientras se mantiene relativamente compacto, jQuery emplea varias estrategias:
  • Aprovechando el conocimiento de CSS: basando el mecanismo para localizar elementos de página en los selectores CSS, jQuery hereda una forma concisa y legible de expresar la estructura de un documento. La biblioteca jQuery se convierte en un punto de entrada
    para los diseñadores que quieren añadir comportamientos a sus páginas, ya que un requisito previo para hacer el desarrollo web profesional es tener conocimiento de la sintaxis CSS.
  • Con las Extensiones de soporte: Para evitar el deslizamiento de las funciones, jQuery relega los usos de specialcase a los complementos. El método para crear nuevos complementos es simple y bien documentado, lo que ha impulsado al desarrollo de una amplia variedad de módulos inventivos y útiles. La mayoría de las características de la descarga básica de jQuery se realizan internamente a través de la arquitectura del complemento, y se pueden quitar si se desea,
    produciendo una biblioteca aún más enfocada a lo que se quiere si se desea.
  • Abstracción de las peculiaridades del navegador: Una desafortunada realidad en el desarrollo web es que cada navegador tiene su propio conjunto de desviaciones de estándares publicados. Una porción significativa de cualquier aplicación web puede ser relegada para manejar características de forma diferente en cada plataforma. Mientras que el panorama del navegador  en constante evolución hace que una base de código completamente neutral para el navegador sea imposible para algunas características avanzadas, jQuery agrega una capa de abstracción que normaliza las tareas comunes, reduciendo el tamaño del código mientras que lo simplifica enormemente.
  • Siempre trabaja con sets: Cuando instruimos a jQuery, a "Buscar todos los elementos con la clase plegable y ocultarlos", no hay necesidad de recorrer cada elemento devuelto. En su lugar, métodos como .hide () están diseñados para trabajar automáticamente en conjuntos de objetos en lugar de los individuales. Esta técnica, llamada iteración implícita, significa que muchas construcciones de bucle se vuelven innecesarias, reduciendo considerablemente el código.
  • Permitir múltiples acciones en una línea: Para evitar el uso excesivo de variables temporales o la repetición inútil, jQuery emplea un patrón de programación llamado encadenamiento
    para la mayoría de sus métodos. Esto significa que el resultado de la mayoría de las operaciones en un objeto es el propio objeto, listo para la siguiente acción que se le aplicará.
Estas estrategias han mantenido el paquete jQuery bastante leve (aproximadamente 30 KB comprimido), mientras que al mismo tiempo proporcionando técnicas para mantener nuestro código personalizado utilizando una biblioteca compacta. 
La elegancia de la biblioteca se produce en parte por el diseño, y en parte debido al proceso evolutivo impulsado por la vibrante comunidad que ha surgido alrededor del proyecto. Los usuarios de jQuery se reúnen para discutir no sólo del desarrollo de complementos, sino también de las mejoras de la biblioteca central. Los usuarios y desarrolladores también ayudan a mejorar continuamente la documentación oficial del proyecto, que se puede encontrar en Proyecto jQuery
A pesar de todos los esfuerzos necesarios para diseñar un sistema tan flexible y robusto, el producto final es gratuito para todos. Este proyecto de código abierto está licenciado bajo licencia MIT (que permite el uso gratuito de jQuery en cualquier sitio y facilita su uso dentro de cualquier software de propiedad) y la GNU Public License (apropiada para su inclusión en otros proyectos de código abierto con licencia GNU).


La biblioteca jQuery proporciona una capa de abstracción de propósito general para scripts web comunes y, por lo tanto, es útil en casi todas las situaciones de secuencias de comandos. Su naturaleza extensible significa que nunca podríamos cubrir todos los usos y funciones posibles en un solo libro, ya que los complementos se desarrollan constantemente para agregar nuevas habilidades. Sin embargo, las características principales nos ayudan a realizar las siguientes tareas:
  • Acceder a elementos en un documento: sin una biblioteca JavaScript, los desarrolladores web a menudo necesitan escribir muchas líneas de código para recorrer el árbol Document Object Model (DOM) y localizar porciones específicas de la estructura de un documento HTML.
    Con jQuery, los desarrolladores tienen un mecanismo selector robusto y eficiente a su disposición, por lo que es fácil recuperar la pieza exacta del documento que necesita ser inspeccionado o manipulado.
$('div.content').find('p');

  • Modifica la apariencia de una página web: CSS ofrece un poderoso método para influir en la forma en que se representa un documento, pero se queda corto cuando los navegadores web no son compatibles con los mismos estándares. Con jQuery, los desarrolladores pueden salvar esta brecha, confiando en el mismo soportede estándares en todos los navegadores. Además, jQuery puede cambiar las clases o las propiedades de estilo individuales aplicadas a una parte del documentoincluso después de que la página se haya procesado.
$('ul > li:first').addClass('active');

  • Alterar el contenido de un documento: No limitado a meros cambios cosméticos, jQuery puede modificar el contenido de un documento con pocas tecleadas. El texto puede ser cambiado, las imágenes pueden ser insertadas o intercambiadas, las listas pueden ser reordenadas, o toda la estructura del HTML puede ser reescrita y extendida, todo con una sola interfaz de programación de aplicaciones (API) fácil de usar.
$ ('#container') .append('<a herf="more.html">more</a>');


  • Responder a la interacción de un usuario: Incluso los comportamientos más elaborados y poderosos no son útiles si no podemos controlar cuándo ellos ocurren. La biblioteca jQuery ofrece una manera elegante de interceptar una gran variedad de eventos(por ejemplo cuando un usuario hace clic en un enlace) sin la necesidad de enturbiar el código HTML en sí con los controladores de eventos. Al mismo tiempo, su API de gestión de eventos elimina las inconsistencias del navegador que a menudo afectan a los desarrolladores web.

$('button.show-details').click(function(){
$('div.details').show();
});

  • Animar los cambios que se están realizando en un documento: Para implementar eficazmente estos comportamientos interactivos, el diseñador también debe proporcionar comentarios visuales al usuario. La biblioteca de jQuery facilita esto proporcionando una variedad de efectos como fades y wipes, así como un kit de herramientas para crear nuevas pantallas gráficas.

$('div.details').slideDown();

  • Recuperar información de un servidor sin actualizar una página: Este patrón de código se ha conocido como Ajax, que originalmente representaba JavaScript asíncrono y XML, pero desde entonces ha llegado a representar un conjunto mucho mayor de tecnologías para la comunicación entre el cliente y el servidor. La biblioteca jQuery elimina la complejidad específica del navegador de este proceso responsivo, lo que permite a los desarrolladores centrarse en la funcionalidad del servidor.

$('div.details').load('more.html #content');

  • Simplificar las tareas comunes de JavaScript: Además de todas las características específicas de documentos de jQuery, la biblioteca proporciona mejoras a las construcciones básicas de JavaScript, como la iteración y la manipulación de arrays.

$.each(obj, function(key, value) {
total += value;
});