<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Sebastián Barría &#187; Mootools</title>
	<atom:link href="http://www.sebastianbarria.com/category/mootools/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.sebastianbarria.com</link>
	<description>Desarrollo web y multimedia</description>
	<lastBuildDate>Wed, 11 Jan 2012 18:17:05 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Mootools vs jQuery</title>
		<link>http://www.sebastianbarria.com/web/mootools-vs-jquery/</link>
		<comments>http://www.sebastianbarria.com/web/mootools-vs-jquery/#comments</comments>
		<pubDate>Fri, 21 Oct 2011 23:21:33 +0000</pubDate>
		<dc:creator>Sebastian Barria</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Mootools]]></category>
		<category><![CDATA[Recomiendo]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://www.sebastianbarria.com/?p=144</guid>
		<description><![CDATA[Este post es en parte para realizar una comparativa entre <a href="http://mootools.net/" target="_blank">Mootools</a> y <a href="http://www.jquery.com/" target="_blank">jQuery&#8230;</a>. Ambas son librerías de javascript que permiten hacer cosas como animar objetos, seleccionar elementos, etc. en cada página donde se ejecuten, es decir que en la práctica lo que hacen es entregarnos funciones pre-hechas para realizar las tareas de javascript y así permitir, entre otras cosas, simplicarnos la vida y compatibilizar los navegadores. Ambas sirven para lo mismo y de hecho funcionan de manera bastante similar.
Muchas personas no conocen Mootools y, como generalmente ven más sitios o ejemplos hechos en jQuery creen que &#8220;es mejor&#8221;,]]></description>
			<content:encoded><![CDATA[<p>Este post es en parte para realizar una comparativa entre <a href="http://mootools.net/" target="_blank">Mootools</a> y <a href="http://www.jquery.com/" target="_blank">jQuery</a>. Ambas son librerías de javascript que permiten hacer cosas como animar objetos, seleccionar elementos, etc. en cada página donde se ejecuten, es decir que en la práctica lo que hacen es entregarnos funciones pre-hechas para realizar las tareas de javascript y así permitir, entre otras cosas, simplicarnos la vida y compatibilizar los navegadores. Ambas sirven para lo mismo y de hecho funcionan de manera bastante similar.</p>
<p>Muchas personas no conocen Mootools y, como generalmente ven más sitios o ejemplos hechos en jQuery creen que &#8220;es mejor&#8221;, pero a mi juicio Mootools es mucho mejor que jQuery. De hecho, NUNCA he visto algo que se pueda hacer en jQuery y que no se pueda hacer en Mootools (por favor si alguien sabe de algo que lo publique acá), y en teoría no tendría porqué jQuery ser mejor que Mootools en ese sentido si ambos están basados únicamente en lo que permite hacer javascript.</p>
<h2>El gran plus de jQuery: su documentación</h2>
<p>Me he encontrado que cuando quiero buscar algo relacionado a jQuery me es bastante fácil encontrar una solución o ejemplos, a diferencia de Mootools, que su documentación es bastante pobre (sólo lo justo y necesario). Además de eso, mootools tiene unos ejemplos online muy antiguos (de la versión 1.1) y para las últimas versiones ofrecen descargar los ejemplos o revisar su funcionalidad en una interfaz llamada <a href="http://jsfiddle.net/" target="_blank">jsFiddle</a>, en la cual también se encuentran ejemplos de las demás librerías como <a href="http://developer.yahoo.com/yui/" target="_blank">YUI</a> o <a href="http://www.prototypejs.org/" target="_blank">prototype</a>.</p>
<p>Por su parte jQuery ofrece cosas mucho más simples como <a href="http://jqueryui.com/" target="_blank">jQueryUI</a> o su listado de <a href="http://plugins.jquery.com/" target="_blank">plugins</a>, los cuales ofrecen ejemplos bastante claros, concretos y simples. Quizás por eso es tan popular jQuery, porque es mucho más fácil encontrar una librería que se ajuste a las necesidades de algún proyecto, la cual puedes implementar incluso con poco conocimiento. De todas formas Mootools no se queda atrás y ofrece <a href="http://mootools.net/forge/" target="_blank">Mootools Forge</a> (que en la práctica es un repositorio de plugins) y existen sitios como <a href="http://www.jourmoly.com.ar/category/mootools-en-espanol/" target="_blank">JOURMOLY</a> que tiene muchos ejemplos realmente útilies y que le &#8220;salvan el pellejo&#8221;.</p>
<h2>El gran plus de Mootools: su funcionalidad</h2>
<p>Vamos directo con un ejemplo: cuando tengo un link y quiero que al hacer click haga submit a un formulario simplemente pongo lo siguiente en mootools:</p>
<pre>$('id_del_formulario').submit();</pre>
<p>En jQuery esto no funciona. Es algo complejo de explicarselo a humanos (yo no soy programador de profesión asique tampoco me gusta explicar las cosas como programador), pero en resumidas cuentas, mootools permite seleccionar un objeto con $ y eso al final es lo mismo que decir document.getElementById. En jQuery, al usar el $ el objeto se convierte en un objeto de jQuery y si quiero hacer un submit tengo que usar una función interna que trae jQuery para dichos efectos. Al ser un objeto de jQuery aparentemente no puede interactuar con todas las funciones básicas de javascript, y eso a la larga es confuso.</p>
<blockquote><p>NOTA: puede ser que en las últimas versiones de jQuery esto ya no suceda. Me tocó hace tiempo hacer algo como esto y últimamente no me ha tocado desarrollar en jQuery, asique si estoy mal avísenme.</p></blockquote>
<p>Lo importante es que Mootools es más flexible en ese sentido. Es bastante fácil de implementar y tiene métodos muy simples. Como es obvio, también, hay cosas que son más simples en jQuery, asique creo que en ese sentido es mejor que cada uno decida.</p>
<h2>Mi opinión personal</h2>
<p>Por mi parte recomiendo Mootools. Personalmente no me gusta jQuery (es como escoger entre WordPress o Joomla, entre los cuales prefiero WordPress), y encuentro que es un poco más engorroso de entender y programar.</p>
<p>Personalmente uso un archivo que pesa 213k pero que contiene TODO Mootools (ya que hay un Mootools &#8220;básico&#8221; y un &#8220;core&#8221; que tiene más funcionalidades) y con eso puedo hacer todo lo que quiera en cualquier sitio. Como los .js se cargan una sola vez y luego se toman del caché el impacto que esto produce es imperceptible y además de esa manera no se llama a n archivos (como sucede en jQuery, donde se carga la base y luego se van cargando librerías para efectos, desplegables, carruseles, etc.), sino que se carga sólo 1, lo cual optimiza bastante la carga de la página.</p>
<p>Con esto inicio el debate por si alguien se quiere sumar&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sebastianbarria.com/web/mootools-vs-jquery/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Automatizar las frases por defecto en los campos de texto</title>
		<link>http://www.sebastianbarria.com/web/automatizar-las-frases-por-defecto-en-los-campos-de-texto/</link>
		<comments>http://www.sebastianbarria.com/web/automatizar-las-frases-por-defecto-en-los-campos-de-texto/#comments</comments>
		<pubDate>Wed, 30 Jun 2010 00:44:01 +0000</pubDate>
		<dc:creator>Sebastian Barria</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Mootools]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://www.sebastianbarria.com/?p=112</guid>
		<description><![CDATA[Imagino que más de alguna vez habrán visto los típicos campos de texto con alguna frase como &#8220;ingresa tu email aquí&#8221; y que cuando le hacen click esa frase desaparece por completo dejando el input vacío. Y lógicamente que cuando me salgo de boton vuelve la frase original.
Acá les dejo una forma automática de hacerlo, en javascript, por supuesto:
<pre>var inputs=$$('#formulario_de_contacto .text','#formulario_de_contacto textarea');
for(i=0;i&#60;inputs.length;i++){
	inputs[i].txtOriginal=inputs[i].value;
	inputs[i].onfocus=function(){
		if(this.value==this.txtOriginal){ this.value=""; }
	}
	inputs[i].onblur=function(){
		if(this.value==""){ this.value=this.txtOriginal; }
	}
}
&#8230;</pre>
No hay mucho que explicar de este código: primero selecciona todos los textarea y elementos con la clase &#8220;text&#8221; (que es la que]]></description>
			<content:encoded><![CDATA[<p>Imagino que más de alguna vez habrán visto los típicos campos de texto con alguna frase como &#8220;ingresa tu email aquí&#8221; y que cuando le hacen click esa frase desaparece por completo dejando el input vacío. Y lógicamente que cuando me salgo de boton vuelve la frase original.</p>
<p>Acá les dejo una forma automática de hacerlo, en javascript, por supuesto:</p>
<pre>var inputs=$$('#formulario_de_contacto .text','#formulario_de_contacto textarea');
for(i=0;i&lt;inputs.length;i++){
	inputs[i].txtOriginal=inputs[i].value;
	inputs[i].onfocus=function(){
		if(this.value==this.txtOriginal){ this.value=""; }
	}
	inputs[i].onblur=function(){
		if(this.value==""){ this.value=this.txtOriginal; }
	}
}
</pre>
<p>No hay mucho que explicar de este código: primero selecciona todos los textarea y elementos con la clase &#8220;text&#8221; (que es la que yo uso para diferenciar los inputs type=&#8221;text&#8221; de los otros inputs) y luego a cada uno de esos elementos les lee el value original y lo guarda en una variable txtOriginal, para luego decirle que cuando se ponga el cursor sobre ellos revise si tienen el mismo texto que el original o si está vacío para hacer la acción correspondiente.</p>
<p>El código anterior utiliza mootools para optimizar la búsqueda de los inputs de texto y los textarea dentro del código. Si no saben como se utiliza mootools, vean <a href="/javascript/tutorial-de-mootools-seleccionar-objetos/">este tutorial</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sebastianbarria.com/web/automatizar-las-frases-por-defecto-en-los-campos-de-texto/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Tutorial de Mootools: Animaciones simples</title>
		<link>http://www.sebastianbarria.com/javascript/tutorial-de-mootools-animaciones-simples/</link>
		<comments>http://www.sebastianbarria.com/javascript/tutorial-de-mootools-animaciones-simples/#comments</comments>
		<pubDate>Sun, 07 Mar 2010 18:31:40 +0000</pubDate>
		<dc:creator>Sebastian Barria</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Mootools]]></category>
		<category><![CDATA[Tutoriales]]></category>

		<guid isPermaLink="false">http://www.sebastianbarria.com/?p=59</guid>
		<description><![CDATA[En este segundo mini-tutorial, explicaré como comenzar a jugar con las animaciones que ofrece <em>Mootools</em>: fades y slides.
Lo bueno es que con esta librería es posible comenzar a hacer cosas con una simple línea o función, y luego podemos ir detallando y complejizando más nuestra animación. Ahora veremos como.
Otro de los beneficios que ofrece <em>Mootools </em>es la posibilidad de hacer animaciones de una manera muy simple. Este es un ejemplo (suponiendo que tenemos un DIV <em>id=&#8221;div_animable&#8221;</em>:
<pre>$('div_animable').slide('out');&#8230;</pre>
Este tipo de función se puede aplicar a cualquier objeto. Por ejemplo, si tenemos un botón, podríamos decirle que]]></description>
			<content:encoded><![CDATA[<p>En este segundo mini-tutorial, explicaré como comenzar a jugar con las animaciones que ofrece <em>Mootools</em>: fades y slides.</p>
<p>Lo bueno es que con esta librería es posible comenzar a hacer cosas con una simple línea o función, y luego podemos ir detallando y complejizando más nuestra animación. Ahora veremos como.</p>
<p>Otro de los beneficios que ofrece <em>Mootools </em>es la posibilidad de hacer animaciones de una manera muy simple. Este es un ejemplo (suponiendo que tenemos un DIV <em>id=&#8221;div_animable&#8221;</em>:</p>
<pre>$('div_animable').slide('out');</pre>
<p>Este tipo de función se puede aplicar a cualquier objeto. Por ejemplo, si tenemos un botón, podríamos decirle que al hacerle click, se esconda un DIV específico:</p>
<pre>&lt;input type="button" value="Esconder DIV" onclick="$('div_animable').slide('out');" /&gt;</pre>
<p>Los efectos más simples que ofrece <em>Mootools </em>son<em> slide()</em> y<em> fade()</em>. Ambos funcionan de la misma manera y son muy fáciles de implementar. La siguiente es la lista de opciones que se puede utilizar (el ejemplo está hecho con slide, pero se puede reemplazar por fade y funciona exactamente igual):</p>
<pre>$('div_animable').slide('in');
$('div_animable').slide('out');
$('div_animable').slide('show');
$('div_animable').slide('hide');
$('div_animable').slide('toggle');</pre>
<p>Al utilizar este tipo de efectos, se genera una animación con sus propiedades por defecto. Para modificar el comportamiento de cada una de ellas, es necesario primero definir la siguiente línea:</p>
<pre>var miEfecto = new Fx.Slide('div_animable', {
duration: 500,
transition: Fx.Transitions.Back.easeOut
});
miEfecto.slideOut();</pre>
<p>En este caso, primero se define un nuevo efecto y se almacena en una variable (<em>miEfecto</em>). Para definir este nuevo efecto, es necesario definir el tipo de efecto (<em>Fx.Slide</em>); al efecto definido se le deben pasar dos parámetros (separados por coma): el DIV que será animado a través de este efecto, y las propiedades que tendrá esta animación (también separadas por coma y encerradas entre llaves <em>{propiedad1, propiedad2, etc}</em>).</p>
<p>La línea siguiente ejecuta la función <em>slideOut()</em> a partir del efecto que generamos anteriormente. Esta puede ser ejecutada en la línea siguiente o seguida de <em>Fx.Slide()</em>, separada por un punto (ver siguiente ejemplo).</p>
<p>Las propiedades, que van dentro de los corchetes son opcionales, es decir que se pueden omitir. Una versión más simple de esto, sería algo así (sin definir propiedades):</p>
<pre>var miEfecto = new Fx.Slide('div_animable').slideOut();</pre>
<p>Es un poco más engorroso hacerlo de esta manera, pero a veces es necesario que podamos modificar los ajustes por defecto.</p>
<p>Ahora: ¿cómo hacer una secuencia de animaciones?. ¡Fácil!&#8230;claro…fácil si alguien te lo explica. Lo que se debe hacer es utilizar la función <em>chain()</em>.</p>
<p>La función <em>chain()</em> se aplica seguida de algún efecto, y dentro de ella se debe definir el nombre de una función que queramos ejecutar, o escribir <em>function(){ }</em> y escribir dentro de las llaves lo que queramos que pase.</p>
<pre>var miEfecto = new Fx.Slide('div_animable', {
duration: 500,
transition: Fx.Transitions.Back.easeOut
}).slideOut().chain(function(){
    alert("hola");
});</pre>
<p>En caso de querer hacer varios efectos del mismo tipo, se pueden simplemente poner uno detrás de otro, después de haber definido <em>Fx.Slide</em>.</p>
<pre>var miEfecto = new Fx.Slide('div_animable').slideOut().slideIn().slideOut();</pre>
<blockquote><p>La función <em>chain()</em> no puede ser aplicada directamente sobre <em>fade()</em> o <em>slide()</em>, es decir, que no puedes hacer esto:</p>
<pre>$('div_animable').fade('out').chain(function(){
 alert("hola");
 });</pre>
</blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.sebastianbarria.com/javascript/tutorial-de-mootools-animaciones-simples/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tutorial de Mootools: seleccionar objetos</title>
		<link>http://www.sebastianbarria.com/javascript/tutorial-de-mootools-seleccionar-objetos/</link>
		<comments>http://www.sebastianbarria.com/javascript/tutorial-de-mootools-seleccionar-objetos/#comments</comments>
		<pubDate>Sun, 07 Mar 2010 18:30:55 +0000</pubDate>
		<dc:creator>Sebastian Barria</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Mootools]]></category>
		<category><![CDATA[Tutoriales]]></category>

		<guid isPermaLink="false">http://www.sebastianbarria.com/?p=58</guid>
		<description><![CDATA[Este es uno de varios minitutoriales donde explicaré lo escencial de <em>Mootools</em>.
Está enfocado a ir aprendiendo funcionalidades específicas, que nos permitan comenzar a aprovechar esta excelente librería desde el primer momento.
En este caso, hablare acerca de como seleccionar objetos según su <em>ID</em>, o <em>clase</em>, para poder aplicar acciones específicas sobre ellos.
Porsupuesto, que lo primero que deberían hacer es bajar la librería <em>Mootools&#8230;</em>; crear una página para trabajar con ella y llamar al archivo dentro de la etiqueta HEAD para que esté disponible para usarse. Una vez hecho esto, veamos de que nos ofrece]]></description>
			<content:encoded><![CDATA[<p>Este es uno de varios minitutoriales donde explicaré lo escencial de <em>Mootools</em>.</p>
<p>Está enfocado a ir aprendiendo funcionalidades específicas, que nos permitan comenzar a aprovechar esta excelente librería desde el primer momento.</p>
<p>En este caso, hablare acerca de como seleccionar objetos según su <em>ID</em>, o <em>clase</em>, para poder aplicar acciones específicas sobre ellos.</p>
<blockquote><p>Porsupuesto, que lo primero que deberían hacer es bajar la librería <em>Mootools</em>; crear una página para trabajar con ella y llamar al archivo dentro de la etiqueta HEAD para que esté disponible para usarse. Una vez hecho esto, veamos de que nos ofrece Mootools.</p></blockquote>
<h3>Seleccionar un objeto específico</h3>
<p>Uno de los primeros beneficios que encontré al utilizar <em>Mootools</em>, es la facilidad y simpleza que ofrece para seleccionar objetos de una página.</p>
<p>Generalmente, para poder seleccionar un objeto específico se debe definir su atributo <em>ID</em>, y luego utilizar la siguiente función para seleccionarlo:</p>
<pre>var miObjeto = document.getElementById('ID_DEL_OBJETO');</pre>
<p>Uno de los problemas de esto es que hay que preocuparse de escribir correctamente la línea, respetando las mayúsculas, lo cual aveces genera errores.</p>
<p>La alternativa <em>Mootools </em>es mucho más simple:</p>
<pre>var miObjeto = $('ID_DEL_OBJETO');</pre>
<p>De esta manera, en la variable <em>miObjeto </em>quedará almacenado el objeto que seleccionamos, igual como si lo hubiésemos escogido con la función <em>document.getElementById()</em>.</p>
<p>Luego de seleccionar el objeto, podemos comprobar que fue seleccionado correctamente utilizando la función <em>alert()</em>:</p>
<pre>alert(miObjeto);</pre>
<p>Si seleccionamos un DIV, por ejemplo, el <em>alert </em>mostrará lo siguiente:</p>
<pre>[Object HTMLDivElement]</pre>
<p>Esto nos indica que el elemento que seleccionamos es un DIV.</p>
<p>Una vez seleccionado, podemos realizar muchas de las tareas que haríamos generalmente:</p>
<pre>miObjeto.innerHTML="Este es el nuevo contenido para este div"</pre>
<pre>miObjeto.style.display="none";</pre>
<h3>Seleccionar múltiples objetos</h3>
<p><em>Mootools </em>también ofrece una alternativa a la supuesta función <em>document.getElementsByClassName()</em>, que se utilizaría para seleccionar todos los objetos de la página que posean una clase específica.</p>
<p>El problema de esta función es que no existe de forma nativa en todos los navegadores. Existen <a href="http://www.anieto2k.com/2007/03/09/comparativas-de-getelementsbyclassname/" target="_blank">algunas alternativas</a> pero en la librería <em>Mootools</em>, esta función viene de forma nativa, por lo tanto, la podremos utilizar en cualquier momento.</p>
<p>Al utilizar javascript sin librerías, para escoger todos los links que estan en un DIV específico, es necesario la siguiente función:</p>
<pre>var misObjetos = document.getElementById("ID_DEL_DIV").getElementsByTagName("A");</pre>
<p>Con esta función, en la variable <em>misObjetos</em>, se almacenará un <em>array </em>con todos los links que existan dentro del DIV especificado.</p>
<p>La alternativa, utilizando <em>Mootools</em>, sería la siguiente:</p>
<pre>var misObjetos = $$('#ID_DEL_DIV a');</pre>
<p>Como verán, se utiliza <em>$$</em> para seleccionar múltiples objetos, y dentro del paréntesis se definen los objetos a seleccionar, igual como se haría en CSS. Esto es mucho más flexible, pues si quiero seleccionar solamente los links que tengan la clase &#8220;<em>especial</em>&#8220;, por ejemplo, debería hacerlo de la siguiente manera:</p>
<pre>var misObjetos = $$('#ID_DEL_DIV a.especial');</pre>
<p>Incluso permite escoger todos los objetos de una página que tengan una clase específica, independiente del tipo de objeto que sea, y que no se encuentren necesariamente en un DIV definido:</p>
<pre>var misObjetos = $$('.especial');</pre>
<p>Con la línea anterior, estaríamos guardando en la variable <em>misObjetos</em>, todos los objetos de la página que tengan aplicada la clase &#8220;<em>especial</em>&#8220;.</p>
<p>Con estos objetos seleccionados, es posible hacer cualquier cosa con ellos, utilizando un <em>FOR</em>. En el siguiente ejemplo, cambiaremos la clase de todos estos objetos a &#8220;<em>nueva_clase</em>&#8220;:</p>
<pre>for(i=0;i&lt;misObjetos.length;i++){
    misObjetos[i].className="nueva_clase";
}</pre>
<p>Una vez ejecutado el <em>FOR </em>anterior, todos los objetos de la página que tenían aplicada la clase &#8220;<em>especial</em>&#8220;, ahora tendrán solamente la clase &#8220;<em>nueva_clase</em>&#8220;.</p>
<p>Incluso, es posible definir acciones a cada uno de estos objetos, que ocurran en eventos especiales, como &#8220;<em>onmouseover</em>&#8221; y &#8220;<em>onmouseout</em>&#8220;:</p>
<pre>for(i=0;i&lt;misObjetos.length;i++){
    misObjetos[i].onmouseover=function(){
        this.className="especial over";
    }
    misObjetos[i].onmouseover=function(){
        this.className="especial";
    }
}
</pre>
<p>Con el <em>FOR </em>anterior, definimos que, para cada objeto, al pasar el mouse sobre él, su atributo class cambie a &#8220;<em>especial hover</em>&#8221; (es decir, que tendrá aplicadas ambas clases). Al sacar el mouse de él, su clase volverá a ser &#8220;<em>especial</em>&#8221; solamente. La idea es definir por CSS que los elementos con la clase &#8220;<em>hover</em>&#8221; tengan algún atributo específico (negrita, cambio de color, etc).</p>
<p>El ejemplo anterior sería una manera práctica para hacer un menú con rollovers. Sin embargo esto es un poco absurdo en este ejemplo, pues todos los elementos son links, y los links por defecto tienen la subclase &#8220;<em>a:hover</em>&#8220;, que se puede definir por CSS. Sin embargo, esto se puede aplicar a todos los elementos de la página, como por ejemplo, a los DIVS, para hacer que cambien de color al pasar el mouse sobre ellos, pues los objetos que no son links, no poseen la subclase &#8220;<em>:hover</em>&#8221; por defecto en todos los navegadores (como siempre, léase Internet Explorer).</p>
<h3>Cambiar las clases</h3>
<p>Como vimos anteriormente, para cambiar la clase de un objeto, utilizamos la propiedad javascript <em>obj.className=”xxxxx”</em>. Si se fijan, en ese caso estamos reemplazando toda la información de clases que tenga el objeto y lo estamos reemplazando por una nueva. Por lo tanto, si un objeto requiere de dos clases para funcionar (por ejemplo, <em>claseA</em> y<em> claseB</em>), y nosotros necesitamos agregar la clase “<em>over</em>”, tendríamos que definir su propiedad <em>className </em>como “<em>claseA claseB over</em>”. Y luego, si queremos eliminar la clase <em>over</em>, tendríamos que volver a definir la propiedad <em>className </em>como “<em>claseA claseB</em>”.</p>
<p>Bueno, <em>Mootools </em>nos ofrece algo mucho más simple. Las funciones <em>addClass()</em> y <em>removeClass()</em>. Si un objeto ya tiene aplicada la clase <em>claseA </em>y <em>claseB</em>, y le decimos <em>obj.addClass(“over”)</em>, automáticamente se va a añadir la clase a la lista. El objeto puede tener 20 clases aplicadas, y nosotros solo tenemos que decir que agregue o quite una clase específica. No será necesario escribir la lista completa de clases. Veámoslo con un ejemplo:</p>
<pre>for(i=0;i&lt;misObjetos.length;i++){
    misObjetos[i].onmouseover=function(){
    this.addClass(“over");
    }
    misObjetos[i].onmouseover=function(){
        this.removeClass("over");
    }
}
</pre>
<p>Lo bueno de esto, es que podemos seleccionar una lista de objetos que tengan aplicada una clase específica y podemos agregarle la clase que deseemos a cualquiera de ellos (“<em>over </em>“ en el caso de este ejemplo), sin tener que preocuparnos de que otras clases posee, o de que tipo de objeto. Para eso, bastaría solo con definir antes del for lo siguiente:</p>
<pre>var misObjetos=$$(‘.destacable’);</pre>
<p>Acabamos de decir que la variable <em>misObjetos </em>(que sería la que contiene la lista de objetos que queremos modificar dentro del <em>FOR</em>) esté compuesta por todos aquellos objetos que posean la clase “<em>destacable</em>”. En este caso, esta clase no necesariamente va a definir algún estilo de CSS para el objeto. Solamente la estamos utilizando para “marcar” todos aquellos objetos que serán modificados por el <em>FOR</em>. Independiente de las clases que tenga cada uno o el tipo de objetos que sea, se le aplicará la clase “<em>over</em>”, y con esto, podremos definir por CSS que cualquier objeto que tenga la clase “<em>over</em>” aplicada, posea alguna característica específica.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sebastianbarria.com/javascript/tutorial-de-mootools-seleccionar-objetos/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>

