<?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>Indalcasa &#187; Javascript</title>
	<atom:link href="http://www.indalcasa.com/category/programacion/javascript/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.indalcasa.com</link>
	<description>Un blog de tecnologia</description>
	<lastBuildDate>Tue, 03 Jan 2012 15:14:37 +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>Buscar por tag, clase e id en jquery</title>
		<link>http://www.indalcasa.com/programacion/javascript/buscar-por-tag-clase-e-id-en-jquery/</link>
		<comments>http://www.indalcasa.com/programacion/javascript/buscar-por-tag-clase-e-id-en-jquery/#comments</comments>
		<pubDate>Tue, 03 Jan 2012 11:32:16 +0000</pubDate>
		<dc:creator>Juan</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[jquery]]></category>

		<guid isPermaLink="false">http://www.indalcasa.com/?p=780</guid>
		<description><![CDATA[<div class="addthis_toolbox addthis_default_style" addthis:url='http://www.indalcasa.com/programacion/javascript/buscar-por-tag-clase-e-id-en-jquery/' addthis:title='Buscar por tag, clase e id en jquery ' ><a class="addthis_button_google_plusone" g:plusone:size="medium" ></a><a class="addthis_counter addthis_pill_style"></a></div>Hace tiempo escribí un artículo hablando de rendimiento de jQuery y el uso de selectores dobles con jQuery, pero lo que no he hecho es explicar como funciona un selector de jQuery. La idea es que esto no sea "la guía definitiva de jQuery", ni nada por el estilo, sino un breve apunte para los [...]<div class="addthis_toolbox addthis_default_style addthis_32x32_style" addthis:url='http://www.indalcasa.com/programacion/javascript/buscar-por-tag-clase-e-id-en-jquery/' addthis:title='Buscar por tag, clase e id en jquery ' ><a class="addthis_button_preferred_1"></a><a class="addthis_button_preferred_2"></a><a class="addthis_button_preferred_3"></a><a class="addthis_button_preferred_4"></a><a class="addthis_button_compact"></a></div>]]></description>
			<content:encoded><![CDATA[<div class="addthis_toolbox addthis_default_style" addthis:url='http://www.indalcasa.com/programacion/javascript/buscar-por-tag-clase-e-id-en-jquery/' addthis:title='Buscar por tag, clase e id en jquery ' ><a class="addthis_button_google_plusone" g:plusone:size="medium" ></a><a class="addthis_counter addthis_pill_style"></a></div><p>Hace tiempo escribí un artículo hablando de <strong><a title="Guía de buenas prácticas para aumentar el rendimiento de jQuery" href="http://www.indalcasa.com/programacion/javascript/guia-de-buenas-practicas-para-aumentar-el-rendimiento-de-jquery/">rendimiento de jQuery</a></strong> y el <strong><a title="Selectores dobles con JQuery, aumentando el rendimiento de JQuery" href="http://www.indalcasa.com/programacion/javascript/selectores-dobles-con-jquery-aumentando-el-rendimiento-de-jquery/">uso de selectores dobles con jQuery</a></strong>, pero lo que no he hecho es explicar <strong>como funciona un selector de jQuery</strong>. La idea es que esto no sea <em><strong>"la guía definitiva de jQuery"</strong></em>, ni nada por el estilo, sino un breve apunte para los lectores, la <strong>visión mas básica del uso de jQuery</strong>.</p>
<p>En este artículo voy a exponer como <strong>seleccionar</strong> de forma mas que simple utilizando un <strong>tag</strong> (<strong>etiqueta de html</strong>), una <strong>clase de css</strong> y un <strong>id</strong>. <strong>jQuery</strong> es un ente muy inteligente y por tanto, sabrá si lo que le estamos pidiendo es que <strong>convierta una etiqueta a jQuery</strong> o que la busque.</p>
<ul>
<li><strong>Buscar por tag con jQuery</strong>: este junto con el de <strong>clase</strong>, son métodos de <strong>búsqueda de poco rendimiento</strong> y que pueden dar como resultado varios objetos (ya que un tag se puede repetir), se indicaría a <strong>jQuery el nombre del tag</strong>.</li>
<li><strong>Buscar por clase con jQuery</strong>: al igual que el anterior, es de <strong>bajo rendimiento</strong> y dará como resultado un <strong>array de objetos</strong>, ya que una <strong>clase</strong> se puede repetir.</li>
<li><strong>Buscar por id con jQuery</strong>: es el mas <strong>optimo</strong> y el que se ha de usar siempre que sea posible. Devolverá un <strong>único objeto</strong> ya que los <strong>id's</strong> en teoría no se repiten.</li>
</ul>
<p>Ahora vista un poco la teoría viene la practica. Lo primero es entender como se hace la <strong>llamada a jQuery</strong>, que tiene 2 formas, la original que es usando la función <strong>jQuery</strong> o la corta que es usando su alias a la <strong>función $</strong>. Veamos un ejemplo genérico de esto y luego uno por cada <strong>selector</strong>.</p>
<pre class="brush: javascript; gutter: true">var selectorjQuery = jQuery(&quot;#mi_id_a_seleccionar&quot;);
var selectorAlias = $(&quot;#mi_id_a_seleccionar&quot;);</pre>
<p>En el ejemplo anterior, el resultado sería el mismo, ya que es similar utilizar la <strong>función jQuery</strong> que la <strong>función $</strong>. Ahora veamos un <strong>ejemplo con los selectores</strong>, con un <strong>código en html</strong> y otro de <strong>código javascript</strong>.</p>
<pre class="brush: xhtml; gutter: true">&lt;p&gt;
   &lt;a href=&quot;#&quot;&gt;Mi link 1&lt;/a&gt;
   &lt;a href=&quot;#&quot; class=&quot;enlace&quot;&gt;Mi link 2&lt;/a&gt;
   &lt;a href=&quot;#&quot; class=&quot;enlace&quot; id=&quot;myLink&quot;&gt;Mi link 3&lt;/a&gt;
&lt;/p&gt;</pre>
<p>Ahora vamos a hacer lo siguiente, con estos enlaces, vamos a poner el color del enlace en negro para todos los enlaces, rojo para los enlaces que tienen una clase enlace y azul para el id myLink</p>
<pre class="brush: javascript; gutter: true">//ponemos todos los enlaces a negro
$(&quot;a&quot;).css(&quot;color&quot;, &quot;#000&quot;);
//los enlaces con la clase .enlace los dejamos en rojo
$(&quot;.enlace&quot;).css(&quot;color&quot;, &quot;#ff0000&quot;);
//el enlace con el id myLink lo ponemos azulado
$(&quot;#myLink&quot;).css(&quot;color&quot;, &quot;#336699&quot;);</pre>
<p>Como podemos observar, las etiquetas se indican con su nombre, las <strong>clases</strong> como si de <strong>css</strong> se tratase, con un punto delante, al igual que los <strong>ids</strong>, que al igual que <strong>css</strong> utilizan una <strong>almohadilla</strong>.</p>
<div class="addthis_toolbox addthis_default_style addthis_32x32_style" addthis:url='http://www.indalcasa.com/programacion/javascript/buscar-por-tag-clase-e-id-en-jquery/' addthis:title='Buscar por tag, clase e id en jquery ' ><a class="addthis_button_preferred_1"></a><a class="addthis_button_preferred_2"></a><a class="addthis_button_preferred_3"></a><a class="addthis_button_preferred_4"></a><a class="addthis_button_compact"></a></div>]]></content:encoded>
			<wfw:commentRss>http://www.indalcasa.com/programacion/javascript/buscar-por-tag-clase-e-id-en-jquery/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Guía de buenas prácticas para aumentar el rendimiento de jQuery</title>
		<link>http://www.indalcasa.com/programacion/javascript/guia-de-buenas-practicas-para-aumentar-el-rendimiento-de-jquery/</link>
		<comments>http://www.indalcasa.com/programacion/javascript/guia-de-buenas-practicas-para-aumentar-el-rendimiento-de-jquery/#comments</comments>
		<pubDate>Tue, 14 Jun 2011 08:29:58 +0000</pubDate>
		<dc:creator>Juan</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[jquery]]></category>
		<category><![CDATA[js]]></category>

		<guid isPermaLink="false">http://www.indalcasa.com/?p=750</guid>
		<description><![CDATA[<div class="addthis_toolbox addthis_default_style" addthis:url='http://www.indalcasa.com/programacion/javascript/guia-de-buenas-practicas-para-aumentar-el-rendimiento-de-jquery/' addthis:title='Guía de buenas prácticas para aumentar el rendimiento de jQuery ' ><a class="addthis_button_google_plusone" g:plusone:size="medium" ></a><a class="addthis_counter addthis_pill_style"></a></div>Llevo tiempo con ganas de escribir esta guía de buenas prácticas para aumentar el rendimiento de jQuery y de javascript en general. Uno de los principales problemas que nos encontramos por internet son que hasta hace un tiempo, cada javascript era de su padre y de su madre, por lo que perdía importancia dentro del [...]<div class="addthis_toolbox addthis_default_style addthis_32x32_style" addthis:url='http://www.indalcasa.com/programacion/javascript/guia-de-buenas-practicas-para-aumentar-el-rendimiento-de-jquery/' addthis:title='Guía de buenas prácticas para aumentar el rendimiento de jQuery ' ><a class="addthis_button_preferred_1"></a><a class="addthis_button_preferred_2"></a><a class="addthis_button_preferred_3"></a><a class="addthis_button_preferred_4"></a><a class="addthis_button_compact"></a></div>]]></description>
			<content:encoded><![CDATA[<div class="addthis_toolbox addthis_default_style" addthis:url='http://www.indalcasa.com/programacion/javascript/guia-de-buenas-practicas-para-aumentar-el-rendimiento-de-jquery/' addthis:title='Guía de buenas prácticas para aumentar el rendimiento de jQuery ' ><a class="addthis_button_google_plusone" g:plusone:size="medium" ></a><a class="addthis_counter addthis_pill_style"></a></div><p><a href="http://www.indalcasa.com/wp-content/uploads/2011/04/jquery.png"><img class="alignleft size-full wp-image-730" title="JQuery" src="http://www.indalcasa.com/wp-content/uploads/2011/04/jquery.png" alt="JQuery" width="256" height="256" /></a>Llevo tiempo con ganas de escribir esta <strong>guía de buenas prácticas para aumentar el rendimiento de jQuery y de javascript en general</strong>. Uno de los principales problemas que nos encontramos por internet son que hasta hace un tiempo, cada <strong>javascript </strong>era de su padre y de su madre, por lo que perdía importancia dentro del <strong>desarrollo web</strong> y no <strong>optimizando </strong>esta parte del <strong>código</strong>. Con la inclusión de nuevas ideas a la hora de <strong>desarrollar webs</strong> y la aparición de multitud de <strong>frameworks como jQuery</strong>, <strong>mootools</strong>, <strong>sproutcore</strong>, hacen que el <strong>código javascript</strong> que escriben los desarrolladores, funcione en todos o casi todos los navegadores, pero aún así, algo falla.</p>
<p>Aunque ya no es como pasaba antiguamente que al entrar en una web o tenías <strong>Internet Explorer</strong> o podías olvidarte del <strong>javascript</strong> y por tanto de una gran parte de <strong>funcionalidad en la web</strong>, hoy en día esto no pasa gracias a los <strong>frameworks de javascript</strong>, es cierto que hay un problema y es el <strong>rendimiento</strong>. En este artículo me quiero centrar en el <strong>framework</strong> mas extendido, que es <strong>jQuery</strong> y una <strong>breve guía de como aumentar el rendimiento de jQuery</strong> y por tanto aumentar el <strong>rendimiento de javascript</strong>.</p>
<p>A continuación, detallo un <strong>listado de buenas practicas para aumentar el rendimiento de jQuery</strong>.</p>
<p>&nbsp;</p>
<h2>1. Acceder a id's y no a clases</h2>
<p>Cuando vemos algun ejemplo de <strong>jQuery</strong>, siempre se nos muestra con <em>$(".clase").html("prueba")</em>, esto es un ejemplo que nos lleva a cometer grandes <strong>faltas de rendimiento</strong> cuando trabajamos con un proyecto muy grande. Aunque a veces no nos queda mas remedio que acceder a <strong>clases</strong>, su uso dentro de los <strong>selectores de jQuery</strong>, debemos de evitarlo siempre que podamos, ya que al <strong>acceder por clase</strong>, <strong>jQuery </strong>buscará en todo el código esa <strong>clase</strong>, todas las veces pueda, sin embargo, si utilizamos un <strong>id</strong>, al encontrar la <strong>primera coincidencia</strong>, la búsqueda parará y por tanto la ejecución será mas rápida.</p>
<blockquote>
<pre class="javascript">$<span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">&quot;.clase&quot;</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">html</span><span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">&quot;prueba&quot;</span><span style="color: #66cc66;">&#41;</span>; <span style="color: #009900; font-style: italic;">//es mas lento</span>
$<span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">&quot;#id&quot;</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">html</span><span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">&quot;prueba&quot;</span><span style="color: #66cc66;">&#41;</span>; <span style="color: #009900; font-style: italic;">//es mas rápido</span></pre>
</blockquote>
<p>&nbsp;</p>
<h2>2. Utilizar selectores dobles en jQuery</h2>
<p>Hace poco tiempo escribí un artículo sobre el <strong><a href="http://www.indalcasa.com/programacion/javascript/selectores-dobles-con-jquery-aumentando-el-rendimiento-de-jquery/">uso de selectores dobles para aumentar el rendimiento en jQuery</a></strong>. Básicamente y sin entrar mucho en detalle, ya que para ello hay ya un articulo dedicado, un <strong>selector doble</strong> lo que hace es <strong>crear un contexto donde buscar el selector</strong>. Imaginemos que queremos cambiar el html  de un menú (si es un absurdo) para ello, en lugar de ejecutar:</p>
<blockquote>
<pre class="javascript">$<span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">&quot;.menu&quot;</span><span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">html</span><span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">&quot;jodimos el menú&quot;</span><span style="color: #66cc66;">&#41;</span>;</pre>
</blockquote>
<p>Lo ideal es usar un <strong>contexto con base a un id</strong>, donde <strong>jquery </strong>tenga que buscar menos cantidad de datos</p>
<blockquote>
<pre class="javascript"><span style="color: #003366; font-weight: bold;">var</span> header = $<span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">&quot;#header&quot;</span><span style="color: #66cc66;">&#41;</span>;
$<span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">&quot;.menu&quot;</span>, header<span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">html</span><span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">&quot;jodimos el menú&quot;</span><span style="color: #66cc66;">&#41;</span>;</pre>
</blockquote>
<p>De esta forma, capturamos un contexto y le decimos a <strong>jQuery que busque solo en ese contexto</strong> en lugar de en toda la web, por lo que la ejecución de un <strong>selector de clase</strong>, será mas rápida.</p>
<p>&nbsp;</p>
<h2>3. Cachear variables que mas utilicemos y de contexto</h2>
<p>Cuando escribimos <strong>código de jQuery</strong>, es normal que recurrentemente accedamos a ciertas partes de la página, que como hemos visto en el ejemplo anterior, utilizaríamos variables de contexto. Para agilizar la carga, es recomendable <strong>cachear estas variables</strong>, para que no tengamos que buscarlas cada vez que vayamos a utilizarlas:</p>
<blockquote>
<pre class="javascript"><span style="color: #003366; font-weight: bold;">var</span> header = $<span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">&quot;#header&quot;</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #003366; font-weight: bold;">var</span> footer = $<span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">&quot;#footer&quot;</span><span style="color: #66cc66;">&#41;</span>;
&nbsp;
.....
&nbsp;
<span style="color: #003366; font-weight: bold;">function</span> bordemenu<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
    $<span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">&quot;.menu&quot;</span>, header<span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">css</span><span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">&quot;border&quot;</span>, <span style="color: #3366CC;">&quot;solid 1px #000000&quot;</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span></pre>
</blockquote>
<p>De esta forma, no buscamos header, sino que accedemos a la misma variable que cargamos al cargar la página. Incluso, si ya sabemos de antemano que vamos a acceder muchas veces al menú, podríamos cachearlo también.</p>
<p>&nbsp;</p>
<h2>4. Evitar el uso de each</h2>
<p>En <strong>jQuery</strong>, la función each no es más que un <strong>foreach</strong> que nos devuelve los <strong>nodos</strong> que hemos seleccionado. Es por esto que debemos de intentar, en la medida de lo posible, no utilizar este <strong>método</strong> para no ejecutar un <strong>foreach</strong> e intentar recorrer los nodos con un <strong>for</strong>, que aunque un poco mas complejo, su <strong>ejecución será mas rápida</strong>.</p>
<p>&nbsp;</p>
<h2>5. Centralizar la carga de eventos</h2>
<p>Cuando hacemos una aplicación web muy muy grande y con mucho uso de <strong>ajax</strong>, nos damos cuenta de que cada vez tenemos mas y mas <strong>eventos </strong>y que como nos descuidemos, acabamos escribiendo casi los mismos <strong>eventos</strong> en multitud de sitios. Es por ello, que es recomendable tener una o varias funciones donde <strong>incialicemos los eventos</strong> para su <strong>carga y ejecución</strong>. Parece una tontería, pero a la larga, mas que en <strong>rendimiento</strong>, nos favorecerá en <strong>rendimiento a la hora de escalar nuestra aplicación</strong>, aunque también evitará la <strong>duplicidad de eventos</strong> sobre un mismo objeto y por tanto la <strong>ejecución será mas rápida</strong>.</p>
<p>&nbsp;</p>
<p>Estos son 5 sencillos casos en los que podemos <strong>aumentar considerablemente la velocidad de ejecución de una web utilizando jQuery</strong>. Quizás, haciendo sencillos ejemplos, no seamos coscientes de esa diferencia de velocidad, pero en una macroaplicación que mueve multitud de datos <strong>asíncronamente</strong>, nos daremos cuenta que estas practicas <strong>agilizarán la página en general y agilizarán jQuery</strong>.</p>
<div class="addthis_toolbox addthis_default_style addthis_32x32_style" addthis:url='http://www.indalcasa.com/programacion/javascript/guia-de-buenas-practicas-para-aumentar-el-rendimiento-de-jquery/' addthis:title='Guía de buenas prácticas para aumentar el rendimiento de jQuery ' ><a class="addthis_button_preferred_1"></a><a class="addthis_button_preferred_2"></a><a class="addthis_button_preferred_3"></a><a class="addthis_button_preferred_4"></a><a class="addthis_button_compact"></a></div>]]></content:encoded>
			<wfw:commentRss>http://www.indalcasa.com/programacion/javascript/guia-de-buenas-practicas-para-aumentar-el-rendimiento-de-jquery/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Selectores dobles con JQuery, aumentando el rendimiento de JQuery</title>
		<link>http://www.indalcasa.com/programacion/javascript/selectores-dobles-con-jquery-aumentando-el-rendimiento-de-jquery/</link>
		<comments>http://www.indalcasa.com/programacion/javascript/selectores-dobles-con-jquery-aumentando-el-rendimiento-de-jquery/#comments</comments>
		<pubDate>Tue, 12 Apr 2011 12:44:50 +0000</pubDate>
		<dc:creator>Juan</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[jquery]]></category>

		<guid isPermaLink="false">http://www.indalcasa.com/?p=726</guid>
		<description><![CDATA[<div class="addthis_toolbox addthis_default_style" addthis:url='http://www.indalcasa.com/programacion/javascript/selectores-dobles-con-jquery-aumentando-el-rendimiento-de-jquery/' addthis:title='Selectores dobles con JQuery, aumentando el rendimiento de JQuery ' ><a class="addthis_button_google_plusone" g:plusone:size="medium" ></a><a class="addthis_counter addthis_pill_style"></a></div>A menudo suele pasar que al comparar diferentes librerías de Javascript, se habla de JQuery como una librería de muy fácil manejo por utilizar selectores DOM y de CSS pero a la vez se dice que por esto es mas lenta que el resto. Mi objetivo con este artículo no es explicar los diferentes tipos [...]<div class="addthis_toolbox addthis_default_style addthis_32x32_style" addthis:url='http://www.indalcasa.com/programacion/javascript/selectores-dobles-con-jquery-aumentando-el-rendimiento-de-jquery/' addthis:title='Selectores dobles con JQuery, aumentando el rendimiento de JQuery ' ><a class="addthis_button_preferred_1"></a><a class="addthis_button_preferred_2"></a><a class="addthis_button_preferred_3"></a><a class="addthis_button_preferred_4"></a><a class="addthis_button_compact"></a></div>]]></description>
			<content:encoded><![CDATA[<div class="addthis_toolbox addthis_default_style" addthis:url='http://www.indalcasa.com/programacion/javascript/selectores-dobles-con-jquery-aumentando-el-rendimiento-de-jquery/' addthis:title='Selectores dobles con JQuery, aumentando el rendimiento de JQuery ' ><a class="addthis_button_google_plusone" g:plusone:size="medium" ></a><a class="addthis_counter addthis_pill_style"></a></div><p><a href="http://www.indalcasa.com/wp-content/uploads/2011/04/jquery.png"><img class="alignleft size-full wp-image-730" title="JQuery" src="http://www.indalcasa.com/wp-content/uploads/2011/04/jquery.png" alt="JQuery" width="256" height="256" /></a>A menudo suele pasar que al comparar <strong>diferentes librerías de Javascript</strong>, se habla de <strong>JQuery </strong>como una <strong>librería</strong> de muy fácil manejo por utilizar <strong>selectores DOM</strong> y de <strong>CSS </strong>pero a la vez se dice que por esto es mas lenta que el resto. Mi objetivo con este artículo no es explicar los <strong>diferentes tipos de selectores de JQuery</strong> sino como <strong>aumentar el rendimiento de JQuery utilizando selectores dobles de contexto</strong>.</p>
<p>En <strong>JQuery </strong>aparte de otras formas como <strong>objetos DOM</strong> y similares, lo normal es <strong>realizar un selector apuntando a una clase de CSS o un id</strong>. Antes de nada, comentar que el uso de <strong>clases en los selectores de JQuery</strong>, es recomendable omitirlo siempre que sea posible (no siempre se puede), ya que <strong>JQuery </strong>espera encontrar varios nodos y por tanto evaluará todo el código, por lo que es mas lento que utilizar <strong>ids</strong>, que una vez lo encuentre, dejará de buscar. Tras este miniconsejo de <strong>rendimiento de JQuery</strong>, me gustaría comentar como funcionan los <strong>selectores dobles de contexto de JQuery</strong>.</p>
<p>Normalmente  para hacer una <strong>selección en JQuery</strong>, hacemos algo tal que <em><strong>$("selector")</strong></em> y seleccionamos el <strong>objeto de JQuery</strong>. Un <strong>selector doble</strong> o <strong>selector de contexto</strong> es básicamente una especie de <strong>cache</strong>, un <strong>contexto </strong>donde buscar ese <strong>selector </strong>pero no en toda la página, sino en una parte de esta. Para utilizar un <strong>selector doble</strong> o <strong>selector de contexto</strong>, lo que hacemos es enviarle un parámetro extra a la consulta de selección. En mi caso me gusta enviar un <strong>objeto de JQuery</strong> que intento cargar en memoria al cargar la página, sacrificando tiempo de carga por <strong>velocidad </strong>a la hora de interactuar con la propia página. Para utilizar un <strong>selector doble</strong> o <strong>selector de conexto</strong> lo que hacemos es por ejemplo hacer <strong>$("selector", objetopreseleccionado)</strong>, de esta forma, <strong>JQuery </strong>no buscará el <strong>selector </strong>en toda la página, sino que se centrará en el <strong>contexto donde se encuentra lo preseleccionado</strong>.</p>
<p>Para que todo quede un poco mas claro, voy a poner un ejemplo, partamos de la idea que tenemos la <strong>página partida en 4 sectores</strong>, una cabecera, un contenido dividido en menú lateral y contenido en si, y un pie. Todas estas partes cambiarán dinámicamente, así que al realizar el <strong>document ready</strong> cargaremos en variables las <strong>diferentes secciones de la web</strong> con la idea de <strong>realizar operaciones de una forma mas rápida</strong> y <strong>consumiendo menos recursos de procesador</strong> al cliente, que ya sabemos que el <strong>javascript</strong> puede <strong>ralentizar mucho una página </strong>si no se hace con cuidado.</p>
<blockquote>
<pre class="javascript"><span style="color: #003366; font-weight: bold;">var</span> header, footer, menu, content;
&nbsp;
$<span style="color: #66cc66;">&#40;</span>document<span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">ready</span><span style="color: #66cc66;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #66cc66;">&#40;</span>$<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
  header = $<span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">&quot;#header&quot;</span><span style="color: #66cc66;">&#41;</span>;
  footer = $<span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">&quot;#footer&quot;</span><span style="color: #66cc66;">&#41;</span>;
  menu = $<span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">&quot;#menu&quot;</span><span style="color: #66cc66;">&#41;</span>;
  content = $<span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">&quot;#content&quot;</span><span style="color: #66cc66;">&#41;</span>;
<span style="color: #66cc66;">&#125;</span></pre>
</blockquote>
<p>Una vez que hemos cargado en memoria las diferentes secciones de la web, podremos trabajar con eventos, modificaciones y efectos de una manera mucho mas eficiente, realizando las llamadas utilizando en los <strong>selectores esas variables como contexto de JQuery</strong>.</p>
<blockquote>
<pre class="javascript">$<span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">&quot;#logo&quot;</span>, header<span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">html</span><span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">&quot;mi html&quot;</span><span style="color: #66cc66;">&#41;</span>;
$<span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">&quot;.article a&quot;</span>, content<span style="color: #66cc66;">&#41;</span>.<span style="color: #006600;">click</span><span style="color: #66cc66;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span> .... <span style="color: #66cc66;">&#125;</span><span style="color: #66cc66;">&#41;</span>;</pre>
</blockquote>
<p>Si utilizamos los <strong>selectores de JQuery</strong> como en el ejemplo anterior, usando un <strong>contexto para la búsqueda</strong>, ahorraremos muchísimo <strong>tiempo de proceso</strong> porque <strong>JQuery </strong>no tendrá que <strong>buscar en todo el documento</strong>, sino que lo realizará en base al <strong>contexto </strong>que le indiquemos. Quiero aclarar que como todo, hay que estudiar cuando usar o no usar contextos, ya que si la página es muy pequeña no merece la pena <strong>cargar en memoria las diferentes secciones</strong>, pero si la página es bastante grande y con muchos datos, podemos <strong>acelerar el uso de JQuery y aumentar el rendimiento de JQuery en un 250%</strong>.</p>
<div class="addthis_toolbox addthis_default_style addthis_32x32_style" addthis:url='http://www.indalcasa.com/programacion/javascript/selectores-dobles-con-jquery-aumentando-el-rendimiento-de-jquery/' addthis:title='Selectores dobles con JQuery, aumentando el rendimiento de JQuery ' ><a class="addthis_button_preferred_1"></a><a class="addthis_button_preferred_2"></a><a class="addthis_button_preferred_3"></a><a class="addthis_button_preferred_4"></a><a class="addthis_button_compact"></a></div>]]></content:encoded>
			<wfw:commentRss>http://www.indalcasa.com/programacion/javascript/selectores-dobles-con-jquery-aumentando-el-rendimiento-de-jquery/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Namespaces o espacios de nombre virtuales en javascript</title>
		<link>http://www.indalcasa.com/programacion/javascript/namespaces-o-espacios-de-nombre-virtuales-en-javascript/</link>
		<comments>http://www.indalcasa.com/programacion/javascript/namespaces-o-espacios-de-nombre-virtuales-en-javascript/#comments</comments>
		<pubDate>Mon, 27 Sep 2010 20:17:28 +0000</pubDate>
		<dc:creator>Juan</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[clases]]></category>
		<category><![CDATA[namespace]]></category>

		<guid isPermaLink="false">http://www.indalcasa.com/?p=653</guid>
		<description><![CDATA[<div class="addthis_toolbox addthis_default_style" addthis:url='http://www.indalcasa.com/programacion/javascript/namespaces-o-espacios-de-nombre-virtuales-en-javascript/' addthis:title='Namespaces o espacios de nombre virtuales en javascript ' ><a class="addthis_button_google_plusone" g:plusone:size="medium" ></a><a class="addthis_counter addthis_pill_style"></a></div>En la mayoría de lenguajes de programación relativamente maduros o potentes, existe lo que denominamos namespace o espacio de nombres. Los namespace no son otra cosa que unos contenedores de nombre donde podremos contener clases, funciones y variables que pueden repetirse con el mismo nombre en otros espacios de nombre o namespace sin que ello [...]<div class="addthis_toolbox addthis_default_style addthis_32x32_style" addthis:url='http://www.indalcasa.com/programacion/javascript/namespaces-o-espacios-de-nombre-virtuales-en-javascript/' addthis:title='Namespaces o espacios de nombre virtuales en javascript ' ><a class="addthis_button_preferred_1"></a><a class="addthis_button_preferred_2"></a><a class="addthis_button_preferred_3"></a><a class="addthis_button_preferred_4"></a><a class="addthis_button_compact"></a></div>]]></description>
			<content:encoded><![CDATA[<div class="addthis_toolbox addthis_default_style" addthis:url='http://www.indalcasa.com/programacion/javascript/namespaces-o-espacios-de-nombre-virtuales-en-javascript/' addthis:title='Namespaces o espacios de nombre virtuales en javascript ' ><a class="addthis_button_google_plusone" g:plusone:size="medium" ></a><a class="addthis_counter addthis_pill_style"></a></div><p>En la mayoría de <strong>lenguajes de programación</strong> relativamente maduros o potentes, existe lo que denominamos <strong>namespace</strong> o <strong>espacio de nombres</strong>. Los <strong>namespace</strong> no son otra cosa que unos <strong>contenedores de nombre</strong> donde podremos contener <strong>clases</strong>, <strong>funciones</strong> y <strong>variables</strong> que pueden repetirse con el mismo <strong>nombre</strong> en otros <strong>espacios de nombre</strong> o <strong>namespace</strong> sin que ello suponga un error. Un <strong>ejemplo</strong> claro de cual es la verdadera utilidad organizadora de los <strong>namespace</strong> o <strong>espacios de nombres</strong> es en las <strong>librerías gráficas</strong> de los <strong>lenguajes de programación</strong>, ya que en estas <strong>librerías</strong> un elemento muy común suele ser la <strong>clase</strong> Window que hace referencia a una ventana pero que puede estar dentro de GTK, QT, <strong>.Net</strong>, API de Windows, etc. (esto no es muy correcto puesto que GTK seria GTKWindow pero es por poner un <strong>ejemplo</strong>). <strong>Javascript</strong>, como un <strong>lenguaje</strong> ya mas que maduro con el paso de los años y relativamente <strong>estandarizado</strong> por los <strong>navegadores</strong> modernos, pese a ser un <strong>lenguaje de programación multiparadigma</strong>, al igual que haga <strong>PHP</strong>, también tiene <strong>namespaces</strong> o <strong>espacios de nombre</strong>, aunque debido a la <strong>debilidad de las variables</strong> estos <strong>namespaces</strong> son mas <strong>virtuales</strong> que reales.</p>
<p>Entendiendo que es y para que sirve un <strong>namespace</strong>, para <strong>declararlo en javascript</strong>, lo que debemos de hacer es utilizar <strong>arrays para generarlo</strong>. Gracias a la <strong>debilidad y dinamismo de las variables en javascript</strong>, podemos <strong>asignar a una variable un array</strong> de posiciones por <strong>nombre</strong> y acceder a estas mediante un <strong>signo de puntuación</strong> "." y no por su clave común de <strong>array</strong> ["clave"], por lo que aquí es donde viene el truco. Básicamente lo que hacemos al <strong>declarar un namespace en javascript</strong> es asignar a un <strong>variable un array</strong> con las <strong>posiciones del namespace</strong> y luego ya dentro de estas posiciones, <strong>acceder</strong> como si desde <strong>.Net</strong> o <strong>Java</strong> se tratase. Con un <strong>ejemplo</strong> se ve mas <strong>sencillo</strong>.</p>
<blockquote>
<pre class="javascript"><span style="color: #003366; font-weight: bold;">var</span> Indalcasa = <span style="color: #66cc66;">&#123;</span> Utilidades : <span style="color: #66cc66;">&#123;</span><span style="color: #66cc66;">&#125;</span> <span style="color: #66cc66;">&#125;</span>;
&nbsp;
Indalcasa.<span style="color: #006600;">Utilidades</span>.<span style="color: #006600;">MiClase</span> = <span style="color: #003366; font-weight: bold;">function</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
  <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #006600;">variable</span> = <span style="color: #3366CC;">&quot;valor&quot;</span>;
&nbsp;
  <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #006600;">metodo</span> = <span style="color: #003366; font-weight: bold;">function</span><span style="color: #66cc66;">&#40;</span>parametros<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span>
    <span style="color: #000066; font-weight: bold;">return</span> <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #006600;">variable</span> + <span style="color: #3366CC;">&quot; &quot;</span> + parametros;
  <span style="color: #66cc66;">&#125;</span>
<span style="color: #66cc66;">&#125;</span>;
&nbsp;
<span style="color: #003366; font-weight: bold;">var</span> iClase = <span style="color: #003366; font-weight: bold;">new</span> Indalcasa.<span style="color: #006600;">Utilidades</span>.<span style="color: #006600;">MiClase</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#41;</span>;
iClase.<span style="color: #006600;">variable</span> = <span style="color: #3366CC;">&quot;nuevo valor&quot;</span>;
<span style="color: #000066;">alert</span><span style="color: #66cc66;">&#40;</span>iClase.<span style="color: #006600;">metodo</span><span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">&quot;prueba&quot;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>;</pre>
</blockquote>
<p>El <strong>ejemplo</strong> anterior mostrará una ventana de alert con un mensaje tal que "nuevo valor prueba", ya que hemos <strong>instanciado la clase</strong>, le hemos cambiado el <strong>valor al atributo de la clase</strong> y en el <strong>método de la clase</strong>, concatenamos el <strong>valor del atributo de la clase</strong> al parámetros que hemos pasado. Esto es un <strong>pequeño y sencillo ejemplo</strong> de lo que se puede hacer con <strong>javascript, namespaces y clases</strong>.</p>
<div class="addthis_toolbox addthis_default_style addthis_32x32_style" addthis:url='http://www.indalcasa.com/programacion/javascript/namespaces-o-espacios-de-nombre-virtuales-en-javascript/' addthis:title='Namespaces o espacios de nombre virtuales en javascript ' ><a class="addthis_button_preferred_1"></a><a class="addthis_button_preferred_2"></a><a class="addthis_button_preferred_3"></a><a class="addthis_button_preferred_4"></a><a class="addthis_button_compact"></a></div>]]></content:encoded>
			<wfw:commentRss>http://www.indalcasa.com/programacion/javascript/namespaces-o-espacios-de-nombre-virtuales-en-javascript/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Autocomplete=&#8221;off&#8221; valido para XHTML</title>
		<link>http://www.indalcasa.com/programacion/autocompleteoff-valido-para-xhtml/</link>
		<comments>http://www.indalcasa.com/programacion/autocompleteoff-valido-para-xhtml/#comments</comments>
		<pubDate>Tue, 08 Jul 2008 12:31:56 +0000</pubDate>
		<dc:creator>Juan</dc:creator>
				<category><![CDATA[HTML]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Programación]]></category>
		<category><![CDATA[XHTML]]></category>

		<guid isPermaLink="false">http://www.indalcasa.com/?p=54</guid>
		<description><![CDATA[<div class="addthis_toolbox addthis_default_style" addthis:url='http://www.indalcasa.com/programacion/autocompleteoff-valido-para-xhtml/' addthis:title='Autocomplete=&#8221;off&#8221; valido para XHTML ' ><a class="addthis_button_google_plusone" g:plusone:size="medium" ></a><a class="addthis_counter addthis_pill_style"></a></div>Cuando escribimos un texto en un input de tipo text (input type="text") nos encontramos que por regla general el navegador nos va a autocompletar lo que estemos escribiendo en ese momento con texto que ya hayamos escrito con anterioridad, recordando para un input que se llama "nombre" el o los nombres que hayamos introducido. La [...]<div class="addthis_toolbox addthis_default_style addthis_32x32_style" addthis:url='http://www.indalcasa.com/programacion/autocompleteoff-valido-para-xhtml/' addthis:title='Autocomplete=&#8221;off&#8221; valido para XHTML ' ><a class="addthis_button_preferred_1"></a><a class="addthis_button_preferred_2"></a><a class="addthis_button_preferred_3"></a><a class="addthis_button_preferred_4"></a><a class="addthis_button_compact"></a></div>]]></description>
			<content:encoded><![CDATA[<div class="addthis_toolbox addthis_default_style" addthis:url='http://www.indalcasa.com/programacion/autocompleteoff-valido-para-xhtml/' addthis:title='Autocomplete=&#8221;off&#8221; valido para XHTML ' ><a class="addthis_button_google_plusone" g:plusone:size="medium" ></a><a class="addthis_counter addthis_pill_style"></a></div><p>Cuando escribimos un texto en un input de tipo text (<strong>input type="text"</strong>) nos encontramos que por regla general el navegador nos va a <strong>autocompletar</strong> lo que estemos escribiendo en ese momento con texto que ya hayamos escrito con anterioridad, recordando para un <strong>input</strong> que se llama "nombre" el o los nombres que hayamos introducido.</p>
<p>La practica del <strong>autocompletado</strong> es muy util siempre que tengamos formularios repetitivos, tales como los formularios de registro que suelen llamarse siempre de forma similar y siempre suelen pedir los mismos datos, evitandonos volver a escribir todos nuestros datos una y otra vez.</p>
<p>Existen casos en los que quizas no queramos que el navegador nos <strong>autocomplete</strong> ese texto, puede darse el caso que tengamos una tienda online que realiza el pago con tarjeta de crédito y no queramos que esa tarjeta de crédito se nos autocomplete. Para evitar esto, existe un atributo que es utilizado por la gran mayoria de los navegadores que es <strong>el atributo autocomplete="on|off"</strong>, que si se desactiva con el valor off, indica al navegador que no ha de <strong>autocompletar ese campo</strong>.</p>
<p>Aunque en muchos casos es muy buena practica usar el atributo autocomplete, el <strong>W3C</strong> no tiene reconocido este atributo como <strong>atributo de la etiqueta input</strong>, con lo cual al intentar validar y encontrarse con el <strong>atributo autocomplete</strong>, nos dara un <strong>error de validación</strong>. Para solucionar el <strong>error de validación</strong> lo que haremos sera utilizar <strong>javascript</strong> para añadir este <strong>atributo</strong>, así la funcionalidad seguira estando ahí, pero no tendremos problemas de validación.</p>
<p>Lo unico que deberemos hacer es añadir el siguiente código al final de la página, o al menos, justo despues de declarar el input</p>
<blockquote>
<pre class="javascript">  &lt;script type=<span style="color: #3366CC;">&quot;text/javascript&quot;</span>&gt;
    <span style="color: #009900; font-style: italic;">//&lt;![CDATA[</span>
    <span style="color: #003366; font-weight: bold;">var</span> elemento = document.<span style="color: #006600;">getElementById</span><span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">&quot;IdDelInput&quot;</span><span style="color: #66cc66;">&#41;</span>
    elemento.<span style="color: #006600;">setAttribute</span><span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">&quot;autocomplete&quot;</span>, <span style="color: #3366CC;">&quot;off&quot;</span><span style="color: #66cc66;">&#41;</span>;
    <span style="color: #009900; font-style: italic;">//]]&amp;gt;</span>
  &lt;/script&gt;</pre>
</blockquote>
<p>De esta forma conseguiremos que al introducir un texto en un input no se autocomplete por el navegador y si queremos <strong>autocompletar</strong> lo podamos hacer por <strong>javascript</strong>.</p>
<p>Un buen y bonito ejemplo de <strong>autocompletado de campos</strong> es el que use para <a title="Buscador de vuelos de Muchoviaje" href="http://ofertas.muchoviaje.com/billetesavion/aspx/vuelos.aspx">muchoviaje</a> en los campos de origen y destino</p>
<div class="addthis_toolbox addthis_default_style addthis_32x32_style" addthis:url='http://www.indalcasa.com/programacion/autocompleteoff-valido-para-xhtml/' addthis:title='Autocomplete=&#8221;off&#8221; valido para XHTML ' ><a class="addthis_button_preferred_1"></a><a class="addthis_button_preferred_2"></a><a class="addthis_button_preferred_3"></a><a class="addthis_button_preferred_4"></a><a class="addthis_button_compact"></a></div>]]></content:encoded>
			<wfw:commentRss>http://www.indalcasa.com/programacion/autocompleteoff-valido-para-xhtml/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Llamar a una función de un padre desde iframe</title>
		<link>http://www.indalcasa.com/programacion/javascript/llamar-a-una-funcion-de-un-padre-desde-iframe/</link>
		<comments>http://www.indalcasa.com/programacion/javascript/llamar-a-una-funcion-de-un-padre-desde-iframe/#comments</comments>
		<pubDate>Mon, 26 May 2008 17:58:16 +0000</pubDate>
		<dc:creator>Juan</dc:creator>
				<category><![CDATA[Javascript]]></category>

		<guid isPermaLink="false">http://www.indalcasa.com/?p=50</guid>
		<description><![CDATA[<div class="addthis_toolbox addthis_default_style" addthis:url='http://www.indalcasa.com/programacion/javascript/llamar-a-una-funcion-de-un-padre-desde-iframe/' addthis:title='Llamar a una función de un padre desde iframe ' ><a class="addthis_button_google_plusone" g:plusone:size="medium" ></a><a class="addthis_counter addthis_pill_style"></a></div>Aunque hoy en día y gracias a Ajax, no soy partidario de usar iframes, aunque en un proyecto en el cual por temas de tiempo, no podía hacerlo con ajax, tuve que conformarme con usar iframes. Durante el desarrollo, me encontre con un problema, que aunque pueda resultar una tontería, siempre viene bien tenerlo apuntado.Cuando [...]<div class="addthis_toolbox addthis_default_style addthis_32x32_style" addthis:url='http://www.indalcasa.com/programacion/javascript/llamar-a-una-funcion-de-un-padre-desde-iframe/' addthis:title='Llamar a una función de un padre desde iframe ' ><a class="addthis_button_preferred_1"></a><a class="addthis_button_preferred_2"></a><a class="addthis_button_preferred_3"></a><a class="addthis_button_preferred_4"></a><a class="addthis_button_compact"></a></div>]]></description>
			<content:encoded><![CDATA[<div class="addthis_toolbox addthis_default_style" addthis:url='http://www.indalcasa.com/programacion/javascript/llamar-a-una-funcion-de-un-padre-desde-iframe/' addthis:title='Llamar a una función de un padre desde iframe ' ><a class="addthis_button_google_plusone" g:plusone:size="medium" ></a><a class="addthis_counter addthis_pill_style"></a></div><p>Aunque hoy en día y gracias a <strong>Ajax</strong>, no soy partidario de usar <strong>iframes</strong>, aunque en un proyecto en el cual por temas de tiempo, no podía hacerlo con <strong>ajax</strong>, tuve que conformarme con usar <strong>iframes</strong>. Durante el desarrollo, me encontre con un problema, que aunque pueda resultar una tontería, siempre viene bien tenerlo apuntado.<br id="tv3h0" /><br id="tv3h1" />Cuando desde un <strong>iframe</strong>, queremos llamar a una <strong>función</strong>, que hemos declarado en la <strong>página padre</strong>, o <strong>página que tiene el código &lt;iframe&gt;</strong>, solamente deberemos de añadir <strong>window.parent</strong>, antes del nombre de la <strong>función</strong>, quedado la sintaxis así:<br id="t6xo0" /></p>
<blockquote><pre class="javascript">  window.<span style="color: #006600;">parent</span>.<span style="color: #003366; font-weight: bold;">function</span><span style="color: #66cc66;">&#40;</span>parametros<span style="color: #66cc66;">&#41;</span></pre>
</blockquote>
<div class="addthis_toolbox addthis_default_style addthis_32x32_style" addthis:url='http://www.indalcasa.com/programacion/javascript/llamar-a-una-funcion-de-un-padre-desde-iframe/' addthis:title='Llamar a una función de un padre desde iframe ' ><a class="addthis_button_preferred_1"></a><a class="addthis_button_preferred_2"></a><a class="addthis_button_preferred_3"></a><a class="addthis_button_preferred_4"></a><a class="addthis_button_compact"></a></div>]]></content:encoded>
			<wfw:commentRss>http://www.indalcasa.com/programacion/javascript/llamar-a-una-funcion-de-un-padre-desde-iframe/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Como incrustar código Javascript en XHTML</title>
		<link>http://www.indalcasa.com/programacion/html/como-incrustar-codigo-javascript-en-xhtml/</link>
		<comments>http://www.indalcasa.com/programacion/html/como-incrustar-codigo-javascript-en-xhtml/#comments</comments>
		<pubDate>Thu, 10 Apr 2008 21:37:16 +0000</pubDate>
		<dc:creator>Juan</dc:creator>
				<category><![CDATA[HTML]]></category>
		<category><![CDATA[Javascript]]></category>

		<guid isPermaLink="false">http://www.indalcasa.com/?p=46</guid>
		<description><![CDATA[<div class="addthis_toolbox addthis_default_style" addthis:url='http://www.indalcasa.com/programacion/html/como-incrustar-codigo-javascript-en-xhtml/' addthis:title='Como incrustar código Javascript en XHTML ' ><a class="addthis_button_google_plusone" g:plusone:size="medium" ></a><a class="addthis_counter addthis_pill_style"></a></div>En muchas ocasiones he escrito código Javascript en una web de XHTML y al intentar validar unas veces funcionaba y otras no. Probando un poco más me di cuenta que cuando escribía código Javascript con ampersans (&#38;) y signos de menor o mayor (&#60; &#62;) el código no validaba. Es cuando caigo en la solución, [...]<div class="addthis_toolbox addthis_default_style addthis_32x32_style" addthis:url='http://www.indalcasa.com/programacion/html/como-incrustar-codigo-javascript-en-xhtml/' addthis:title='Como incrustar código Javascript en XHTML ' ><a class="addthis_button_preferred_1"></a><a class="addthis_button_preferred_2"></a><a class="addthis_button_preferred_3"></a><a class="addthis_button_preferred_4"></a><a class="addthis_button_compact"></a></div>]]></description>
			<content:encoded><![CDATA[<div class="addthis_toolbox addthis_default_style" addthis:url='http://www.indalcasa.com/programacion/html/como-incrustar-codigo-javascript-en-xhtml/' addthis:title='Como incrustar código Javascript en XHTML ' ><a class="addthis_button_google_plusone" g:plusone:size="medium" ></a><a class="addthis_counter addthis_pill_style"></a></div><p>En muchas ocasiones he escrito código <strong>Javascript </strong>en una web de <strong>XHTML </strong>y al intentar validar unas veces funcionaba y otras no. Probando un poco más me di cuenta que cuando escribía código <strong>Javascript </strong>con ampersans (&amp;) y signos de menor o mayor (&lt; &gt;) el código no validaba. Es cuando caigo en la solución, si <strong>XHTML </strong>no deja de ser un <strong>XML</strong>, probemos a poner un <strong>CDATA</strong>.</p>
<blockquote>
<pre class="html4strict"><span style="color: #00bbdd;">&lt;!DOCTYPE html PUBLIC</span>
<span style="color: #00bbdd;">&quot;-//W3C//DTD XHTML 1.0 Transitional//EN&quot;</span>
<span style="color: #00bbdd;">&quot;http://www.w3.org</span>
<span style="color: #00bbdd;">/TR/xhtml1/DTD/xhtml1-transitional.dtd&quot;&gt;</span>
<span style="color: #009900;"><a href="http://december.com/html/4/element/html.html"><span style="color: #000000; font-weight: bold;">&lt;html</span></a> xmlns=<span style="color: #ff0000;">&quot;http://www.w3.org/1999/xhtml&quot;</span>
<span style="color: #000066;">dir</span>=<span style="color: #ff0000;">&quot;ltr&quot;</span> <span style="color: #000066;">lang</span>=<span style="color: #ff0000;">&quot;es-ES&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
....
....
<span style="color: #009900;"><a href="http://december.com/html/4/element/script.html"><span style="color: #000000; font-weight: bold;">&lt;script</span></a> <span style="color: #000066;">type</span>=<span style="color: #ff0000;">&quot;text/javascript&quot;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
//<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;</span>!<span style="color: #66cc66;">&#91;</span>CDATA<span style="color: #66cc66;">&#91;</span>
//Aquí metemos nuestro codigo javascript
//<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#93;</span><span style="color: #000000; font-weight: bold;">&gt;</span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/script&gt;</span></span></pre>
</blockquote>
<p>Con esto ya podemos escribir código <strong>Javascript </strong>embebido sin que por ello no nos valide nuestra web.</p>
<div class="addthis_toolbox addthis_default_style addthis_32x32_style" addthis:url='http://www.indalcasa.com/programacion/html/como-incrustar-codigo-javascript-en-xhtml/' addthis:title='Como incrustar código Javascript en XHTML ' ><a class="addthis_button_preferred_1"></a><a class="addthis_button_preferred_2"></a><a class="addthis_button_preferred_3"></a><a class="addthis_button_preferred_4"></a><a class="addthis_button_compact"></a></div>]]></content:encoded>
			<wfw:commentRss>http://www.indalcasa.com/programacion/html/como-incrustar-codigo-javascript-en-xhtml/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

