¿Cuál es la diferencia entre '$(esto)' y 'esto'?

Actualmente estoy trabajando en este tutorial: Getting Started with jQuery

Para los dos ejemplos siguientes:

$("#orderedlist").find("li").each(function (i) {
    $(this).append(" BAM! " + i);
});
$("#reset").click(function () {
    $("form").each(function () {
        this.reset();
    });
});

Fíjate que en el primer ejemplo, usamos $(this) para añadir algo de texto dentro de cada elemento li. En el segundo ejemplo usamos this directamente al reiniciar el formulario.

Parece que $(this) se utiliza mucho más a menudo que this.

Supongo que en el primer ejemplo, $() está convirtiendo cada elemento li en un objeto jQuery que entiende la función append() mientras que en el segundo ejemplo reset() puede ser llamado directamente en el formulario.

Básicamente necesitamos $() para funciones especiales de jQuery.

¿Es esto correcto?

Solución

Sí, sólo se necesita $() cuando se utiliza jQuery. Si quieres la ayuda de jQuery's para hacer cosas del DOM sólo tienes que tener esto en cuenta.

$(this)[0] === this

Básicamente cada vez que recuperas un conjunto de elementos jQuery lo convierte en un objeto jQuery. Si sabes que sólo tienes un resultado, va a estar en el primer elemento.

$("#myDiv")[0] === document.getElementById("myDiv");

Y así sucesivamente...

Comentarios (3)

Sí, necesitas $(this) para las funciones jQuery, pero cuando quieras acceder a métodos javascript básicos del elemento que no usan jQuery, puedes usar simplemente this.

Comentarios (0)

Sí, al usar $(this), has habilitado la funcionalidad de jQuery para el objeto. Al usar sólo this, sólo tiene la funcionalidad genérica de Javascript.

Comentarios (0)