Chalalo Land

Tecnologías ASP.NET y un poco Más

Contacto


 Si quierer cooperar, yo feliz, muy agradecido :)

De donde me Visitan?

Locations of visitors to this page

Generic Content

Si te gustaron los articulos, y te animas te estaría muy agradecido!


Recent Posts

Tags

Community

Blogs de MVP

Amigos Geeks

Blogs Imperdibles

GODS

Archives

Email Notifications

[Alerta] jQuery 1.6 Atención con los efectos del cambio en attr

Hoy tenemos la noticia de la nueva actualización de jQuery, ya vamos en la versión 1.6,y si no me apuro en escribir este post, cuando termine, ya habrán liberado una nueva versión.

jQuery 1.6 viene con mejoras de performance en la selección de atributos y además establece una diferencia entre atributo y propiedad (ahora existe el prop()) entre otras cosas, puedes ver más detalle en http://blog.jquery.com/2011/05/03/jquery-16-released/

Sin embargo, el cambio en la funcionalidad de attrib, cambio que se hace necesario para dar soporte a la compatibilidad con HTML5, pero que nos puede complicar si no somos cuidadosos.

Voy a poner un ejemplo en el que podremos ver el problema:

<html>

<head runat="server">

    <title></title>

    <script src="Scripts/jquery-1.4.1.min.js" type="text/javascript"></script>

    <script type="text/javascript">

        $(document).ready(function () {

            $("#bt_test").click(function () {

                alert($("#ck_test").attr("checked"));

            });

        });

    </script>

</head>

<body>

    <form id="form1" runat="server">

    <div>

        <input type="checkbox" id="ck_test" checked>

        Test</div>

    <input type="button" id="bt_test" value="Test" />

    </form>

</body>

</html>

 

El diseño de esto extremadamente simple:

image

Como vez estamos utilizando jQuery 1.4.1 y al momento de presionar el botón, el resultado es true:

image

Ahora vamos a utilizar jQuery 1.6 eliminando la referencia a la versión 1.4.1:

<script src="http://code.jquery.com/jquery-1.6.min.js"
type="text/javascript"></script
>

y el resultado que vamos a obtener es un string vacío:

image

 

Entonces, es recomendable revisar nuestro código antes de referenciar la nueva versión. Tenemos que modificar el tag a:

<input type="checkbox" id="ck_test" checked="checked" />

De esta manera se logrará compatibilidad con HTML5 y obtendremos el resultado:

image

Espero que te sirva!
Saludos
Gonzalo

Posted: 4/5/2011 4:55 por Gonzalo Perez | con 8 comment(s)
Archivado en:
Comparte este post:

Comentarios

Julito ha opinado:

Hola amigo Gonzalo, si bien es sabido, cada nuevo release de jquery trae buenas mejoras, pero asi mismo nos puede ocasionar algunos problemas como el de tu ejemplo, cuando cambie de la v 1.4 a la 1.5 no tuve mayor problema, crees q este nuevo release puede llegar a generar muchos problemas?

O seria mejor utilziar la v1.6 si vamos a enfocarnos al desarrollo con HTML 5?

# May 4, 2011 5:18 AM

Gonzalo Perez ha opinado:

Hola Julito,

Creo que el cambio es bueno en términos performance, esta vez vamos a tener que asumir un "proceso de migración" a la nueva versión, ya no es tan transparente como solía ser.

Saludos!

# May 4, 2011 5:29 AM

Diego ha opinado:

Amigo, en el atributo checked no le estás dando ningún valor en tu código:

<input type="checkbox" id="ck_test" checked>

y simplemente por eso te falla, y lógicamente debería fallar en cualquier versión de jquery (pero no lo hace).

Si bien te diste cuenta, esa forma de implementar un atributo ya está bastaaaaaaaante obsoleta, desde el XHTML 1.0 se empezó a usar checked="checked", disabled="disabled", selected="selected" y multiple="multiple" y en realidad debería haberse implementado hace mucho, pues la sintaxis del html siempre es:

<etiqueta atributo="valor"></etiqueta>

y para otros elementos como <input> e <img>:

<etiqueta atributo="valor" />

Saludos!

# May 4, 2011 6:59 AM

Gonzalo Perez ha opinado:

Hola Diego,

Primero, gracias por el comentario!

Sin embargo, no es que a mí me falle, estoy mostrando lo mismo ejemplo que está en la pagina de jquery, por otro lado lamentablemente no todos son estrictos en el desarrollo y/o han implementado cierta funcionalidad con código HTML mal implementado o muy antiguo, es por eso este post en el blog.

Y como bien dices, sé que esa forma de implementar es bastante antigua, pero no está demás dar el aviso para que se revisen los códigos cuando se tiene sospecha de que no estan bien implementados.

Ese era el sentido del post, no otro.

Saludos!

# May 4, 2011 1:41 PM

Juan Pelaez ha opinado:

Pues hombre Diego tiene razón, esta sintaxis debía usarse hace un buen rato para tener compatibilidad con XHTML, si se está usando visual studio, dreamweaver o expression web se puede habilitar el validador de sintaxis contra xhtml y ahí tendremos una ayuda para saber si el código es válido o no y no tener este problema que reportas

# May 4, 2011 4:29 PM

Gonzalo Perez ha opinado:

Arggg, jajaj, estimado, no es que yo tenga el error, si no que evidencio lo que puede suceder si no se tiene precausión y es justamente lo que, si se toman el tiempo de leer la documentación del Release de jquery 1.6 van a ver el mismo ejemplo, que ,concuerdo con ustedes, es causa de las malas prácticas, pero bueno, no todos las siguen y es correcto prevenirlos.

Eso !+

# May 4, 2011 4:40 PM

Pablo Hormazabal ha opinado:

Es entretenido ver a una persona capaz de darse cuenta de un error de sintaxis, pero no es capaz de tener una buena comprensión de lectura ni es capaz de entender el contexto de las cosas. Será ese el problema de muchos ingenieros TI.

Estimados si se hubiesen tomado mas de un minuto en entender el post no habría existido la necesidad de que el autor explicara no una si no dos veces el sentido de lo escrito.

Esta de más decir que tratar de demostrar conocimientos (muy básicos) en contextos no necesarios es un verdadero Fail, para otra por favor darse un minuto antes de opinar así generamos algo constructivo y ustedes no pasan una vergüenza hablando de manzanas cuando se escribe de peras, por último si necesitan que les digan que saben mucho no creo que éste sea el lugar.  

# May 17, 2011 6:07 PM

Gonzalo Perez ha opinado:

Gracias Maese, entendió la idea perfectamente :)

Saludos!

# May 18, 2011 6:13 PM