Có vẻ như hầu hết các mẹo thú vị và quan trọng đã được đề cập, vì vậy đây chỉ là một bổ sung nhỏ.
Mẹo nhỏ là hàm jQuery.each (object, callback) . Mọi người có lẽ đang sử dụng jQuery.each (gọi lại) để lặp lại chính đối tượng jQuery vì nó là tự nhiên. Hàm tiện ích jQuery.each (object, callback) lặp lại trên các đối tượng và mảng. Trong một thời gian dài, bằng cách nào đó tôi đã không thấy nó có thể là gì ngoài một cú pháp khác (tôi không ngại viết tất cả các vòng lặp thời trang), và tôi hơi xấu hổ khi tôi nhận ra sức mạnh chính của nó chỉ gần đây.
Vấn đề là vì phần thân của vòng lặp trong jQuery.each (đối tượng, gọi lại) là một hàm , nên bạn nhận được một phạm vi mới mỗi lần trong vòng lặp, điều này đặc biệt thuận tiện khi bạn tạo các bao đóng trong vòng lặp.
Nói cách khác, một lỗi phổ biến điển hình là làm một việc như:
var functions = [];
var someArray = [1, 2, 3];
for (var i = 0; i < someArray.length; i++) {
functions.push(function() { alert(someArray[i]) });
}
Bây giờ, khi bạn gọi các hàm trong functions
mảng, bạn sẽ nhận được cảnh báo ba lần với nội dung undefined
rất có thể không phải là những gì bạn muốn. Vấn đề là chỉ có một biến i
và cả ba lần đóng đều đề cập đến nó. Khi vòng lặp kết thúc, giá trị cuối cùng i
là 3 và someArrary[3]
là undefined
. Bạn có thể làm việc xung quanh nó bằng cách gọi một chức năng khác sẽ tạo ra sự đóng cửa cho bạn. Hoặc bạn sử dụng tiện ích jQuery mà về cơ bản nó sẽ làm điều đó cho bạn:
var functions = [];
var someArray = [1, 2, 3];
$.each(someArray, function(item) {
functions.push(function() { alert(item) });
});
Bây giờ, khi bạn gọi các chức năng, bạn nhận được ba cảnh báo với nội dung 1, 2 và 3 như mong đợi.
Nói chung, không có gì bạn không thể tự làm, nhưng thật tuyệt khi có.