2010-08-03 11 views
5

Jaka jest różnica między $(this) i this w jQuery? Oto dwa różne Wykorzystanie:

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


$(document).ready(function() { 
    // use this to reset several forms at once 
    $("#reset").click(function() { 
    $("form").each(function() { 
     this.reset(); 
    }); 
    }); 
}); 

Odpowiedz

10

Zmienna "this" odnosi się (w takich przypadkach, jak dostarczone procedury obsługi zdarzeń) do elementu DOM. Zatem $ (this) to obiekt jQuery zawierający tylko jeden element DOM.

Powinieneś użyć zwykłego "this", gdy wystarczą natywne interfejsy API DOM, i $ (this), gdy potrzebujesz pomocy jQuery. Twój drugi przykład to dobra ilustracja; inny może być, gdy potrzebujesz tylko "id" lub "name" elementu.

9

Różnica polega na tym, że this sama jest odniesieniem do obiektu DOM, że zdarzenie jest działającą na. $(this) tworzy obiekt jquery z tego obiektu DOM.

EDYCJA: W przypadku obiektu DOM nie będziesz mieć dostępu do wszystkich dodanych funkcji jquery, ale tylko tego, na co pozwala dom. Zasadniczo można myśleć o tym, że this jest taki sam, jak w przypadku, gdy wykonano document.getElementById(id)

+0

„' this' _by sobie jest odniesienie do obiektu DOM, że zdarzenie jest działającą upon_”, więc zdecydowanie najpiękniejszą definicję poznawanie 'this', Thumbs up kumpel:)! – Irfan

8

$(this) jest obiektem jQuery podczas this odnosi się do natywnego dom obiektu