[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:

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

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:

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:

Espero que te sirva!
Saludos
Gonzalo