Koks skirtumas tarp '$(this)' ir 'this'?

Šiuo metu dirbu su šia pamoka: Pradedame dirbti su jQuery

Toliau pateikti du pavyzdžiai:

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

Pastebėkite, kad pirmajame pavyzdyje mes naudojame $(this), norėdami pridėti tekstą prie kiekvieno li elemento. Antrajame pavyzdyje iš naujo nustatydami formą tiesiogiai naudojame this.

Atrodo, kad $(this) naudojamas daug dažniau nei this.

Spėju, kad pirmajame pavyzdyje $() kiekvieną li elementą paverčia jQuery objektu, kuris supranta append() funkciją, o antrajame pavyzdyje reset() gali būti tiesiogiai iškviesta formoje.

Iš esmės $() mums reikia specialioms tik jQuery funkcijoms.

Ar tai teisinga?

Sprendimas

Taip, $() reikia tik tada, kai naudojate jQuery. Jei norite, kad "jQuery" padėtų atlikti DOM veiksmus, turėkite tai omenyje.

$(this)[0] === this

Iš esmės kiekvieną kartą, kai gaunate elementų rinkinį atgal, jQuery paverčia jį jQuery objektu. Jei žinote, kad turite tik vieną rezultatą, jis'bus pirmajame elemente.

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

Ir taip toliau...

Komentarai (3)

Taip, $(this) reikalingas jQuery funkcijoms, bet kai norite pasiekti pagrindinius elemento javascript metodus, kurie nenaudoja jQuery, galite tiesiog naudoti this.

Komentarai (0)

Taip, naudodami $(this) įjungėte jQuery funkciją objektui. Naudojant tik this, jis turi tik bendrąsias Javascript funkcijas.

Komentarai (0)