Nếu bạn nhìn vào doco for the jQuery()
function - thường được xem là phiên bản viết tắt $()
- bạn sẽ thấy rằng nó chấp nhận nhiều loại và kết hợp các tham số khác nhau.
Cú pháp bạn hỏi về:
$([])
là cú pháp jQuery(elementArray)
cho phép bạn vượt qua một loạt các yếu tố DOM nơi sự trở lại sẽ là một đối tượng jQuery gói những yếu tố này. Bằng cách truyền một mảng rỗng, bạn về cơ bản nhận được một đối tượng jQuery rỗng (giống như bạn sẽ thông qua một chuỗi chọn không khớp với bất kỳ thứ gì, nhưng không có sự thiếu hiệu quả của việc tìm kiếm một kết quả đầu tiên).
Khi tạo allFields
có ba yếu tố DOM thêm vào nó (nơi name
, email
và password
được tạo ra ngay trước đó như các đối tượng jQuery chứa một phần tử DOM mỗi):
allFields = $([]).add(name).add(email).add(password)
Có lẽ lợi thế của việc thêm các cá nhân các mục thay vì chỉ thực hiện:
allFields = $("#name,#email,#password")
là các đối tượng riêng lẻ cho từng thành phần cũng cần thiết và sẽ được tạo ra, vì vậy không cần bận tâm chọn lại chúng thông qua một chuỗi truy vấn.
Một điều khó hiểu là tôi không thấy allFields
được thêm/nối vào bất cứ đâu/đối tượng bất kỳ, nó chỉ được tạo và sửa đổi, tôi có thiếu gì đó không?
Nó được gọi ở hai nơi khác trong các mã:
allFields.removeClass("ui-state-error");
// and, later
allFields.val("").removeClass("ui-state-error");
Đây là cách sử dụng jQuery khá chuẩn để loại bỏ một lớp hoặc thiết lập giá trị của tất cả các yếu tố trong các đối tượng jQuery. Không cần phải thêm nó vào một số đối tượng khác.