thislà phần tử, $(this)là đối tượng jQuery được xây dựng với phần tử đó
$(".class").each(function(){
//the iterations current html element
//the classic JavaScript API is exposed here (such as .innerHTML and .appendChild)
var HTMLElement = this;
//the current HTML element is passed to the jQuery constructor
//the jQuery API is exposed here (such as .html() and .append())
var jQueryObject = $(this);
});
Nhìn sâu hơn
thisMDN được chứa trong ngữ cảnh thực thi
Phạm vi đề cập đến bối cảnh thực thi ECMA hiện tại . Để hiểu this, điều quan trọng là phải hiểu cách thức bối cảnh thực thi hoạt động trong JavaScript.
bối cảnh thực hiện ràng buộc điều này
Khi điều khiển đi vào bối cảnh thực thi (mã đang được thực thi trong phạm vi đó), môi trường cho các biến được thiết lập (Môi trường biến đổi và biến đổi - về cơ bản, điều này thiết lập một khu vực để các biến có thể truy cập được và một khu vực dành cho các biến cục bộ được lưu trữ), và các ràng buộc thisxảy ra.
jQuery liên kết này
Bối cảnh thực hiện tạo thành một ngăn xếp hợp lý. Kết quả là bối cảnh sâu hơn trong ngăn xếp có quyền truy cập vào các biến trước đó, nhưng các ràng buộc của chúng có thể đã bị thay đổi. Mỗi khi jQuery gọi một hàm gọi lại, nó sẽ thay đổi liên kết này bằng cách sử dụng applyMDN .
callback.apply( obj[ i ] )//where obj[i] is the current element
Kết quả của việc gọi applylà bên trong các hàm gọi lại jQuery, thisđề cập đến phần tử hiện tại đang được sử dụng bởi hàm gọi lại.
Ví dụ, trong .each, chức năng gọi lại thường được sử dụng cho phép .each(function(index,element){/*scope*/}). Trong phạm vi đó, this == elementlà đúng.
Các cuộc gọi lại jQuery sử dụng hàm áp dụng để liên kết hàm được gọi với phần tử hiện tại. Phần tử này xuất phát từ mảng phần tử của đối tượng jQuery. Mỗi đối tượng jQuery được xây dựng chứa một mảng các phần tử khớp với API jQuery chọn được sử dụng để khởi tạo đối tượng jQuery.
$(selector)gọi hàm jQuery (hãy nhớ rằng đó $là một tham chiếu đến jQuery, mã window.jQuery = window.$ = jQuery;:). Trong nội bộ, hàm jQuery khởi tạo một đối tượng hàm. Vì vậy, trong khi nó có thể không rõ ràng ngay lập tức, sử dụng sử dụng $()nội bộ new jQuery(). Một phần của việc xây dựng đối tượng jQuery này là tìm tất cả các kết quả khớp của bộ chọn. Hàm tạo cũng sẽ chấp nhận các chuỗi và phần tử html . Khi bạn chuyển thisđến hàm tạo jQuery, bạn sẽ chuyển phần tử hiện tại cho một đối tượng jQuery được xây dựng . Đối tượng jQuery sau đó chứa cấu trúc giống như mảng của các phần tử DOM khớp với bộ chọn (hoặc chỉ phần tử đơn trong trường hợp this).
Khi đối tượng jQuery được xây dựng, API jQuery hiện được hiển thị. Khi một hàm api jQuery được gọi, nó sẽ lặp bên trong cấu trúc giống như mảng này. Đối với mỗi mục trong mảng, nó gọi hàm gọi lại cho api, ràng buộc hàm gọi lại thisvới phần tử hiện tại. Cuộc gọi này có thể được nhìn thấy trong đoạn mã ở trên, nơi objcó cấu trúc giống như mảng và ilà trình vòng lặp được sử dụng cho vị trí trong mảng của phần tử hiện tại.