Jquery $ thực sự trả về cái gì?


113

Tôi đã đọc tài liệu JQuery và trong khi dành nhiều sự chú ý cho những gì bạn nên chuyển hàm, tôi không thấy bất kỳ thông tin nào về những gì nó thực sự trả về .

Đặc biệt, nó có luôn trả về một mảng, ngay cả khi chỉ tìm thấy một phần tử? Nó có trả về null khi không tìm thấy gì không? Tài liệu này ở đâu?

Tôi hiểu rằng các phương thức jquery có thể được áp dụng cho giá trị trả về, nhưng nếu tôi muốn chỉ sử dụng trực tiếp giá trị trả về thì sao?

Câu trả lời:


76

Từ mô tả của Rick Strahl :

Đối tượng jQuery: Tập hợp được bao bọc: Bộ chọn trả về một đối tượng jQuery được gọi là "tập hợp được bao bọc", là một cấu trúc giống mảng chứa tất cả các phần tử DOM đã chọn. Bạn có thể lặp qua tập hợp được bao bọc như một mảng hoặc truy cập các phần tử riêng lẻ thông qua trình chỉ mục (ví dụ: $ (sel) [0]). Quan trọng hơn, bạn cũng có thể áp dụng các hàm jQuery với tất cả các phần tử đã chọn.

Về việc không trả lại gì:

Nó luôn trả về một mảng? Nó có trả về null không?

Bạn luôn nhận lại cùng một thứ, cho dù nó có bất kỳ nội dung nào hay không là câu hỏi. Thông thường, bạn có thể kiểm tra điều này bằng cách sử dụng .val () (ví dụ: $ ('. MyElem'). Val ())


1
Tuyệt vời, cảm ơn ... điều này rất hữu ích. Tôi không biết rằng một đối tượng do người dùng định nghĩa đồng thời có thể "giống như mảng" - Tôi đoán đó là thiên tài của jquery.
harpo

Bạn được chào đón - tôi cũng vừa chỉnh sửa và thêm liên kết đầy đủ vào bài viết của Rick Strahl - đó là một bài đọc hay.
Ian Robinson

14
Đối với câu hỏi dẫn tôi đến đây, cụ thể là, làm cách nào để bạn kiểm tra xem có tìm thấy bất cứ thứ gì hay không, tôi đã sử dụng $ (query) .length , có vẻ là một mẹo nhỏ.
harpo

3
một mảng như tập hợp là gì .... nó là một mảng hay một đối tượng hay? ... chúng ta có thể chính xác không?

26

Nó không trả về một mảng mà trả về một đối tượng jQuery. Đối tượng jQuery là thứ chứa tất cả các phương thức jQuery đặc biệt.

Nó không bao giờ trả về null hoặc một kiểu khác. Nếu một phần tử được tìm thấy, đối tượng jQuery sẽ chỉ có một phần tử con. Nếu không tìm thấy phần tử nào, đối tượng jQuery sẽ trống.


6

Hàm jQuery (tức là " $") luôn trả về một đối tượng jQuery trong mọi trường hợp.


4
@harpo: không hề; Nó chỉ là các đối tượng được đặt tên kém. "Đối tượng jQuery", hay còn gọi là $"đối tượng jQuery", hay còn gọi là "tập hợp được bao bọc".
Sean McMillan

5

Như một trình trả lời khác đã đề cập, nó luôn trả về đối tượng jQuery.

Đối tượng này luôn chứa một mảng các phần tử (ngay cả khi nó là một mảng trống hoặc một mảng chỉ có một đối tượng).

Nếu bạn muốn sử dụng đối tượng được trả về "trực tiếp", như một phần tử thuần túy, bạn có thể thực hiện một trong các thao tác sau:

$('selector')[0] // element
$('selector').get(0) // element
$('selector').length // number of elements in the array

3

Từ tài liệu jQuery :

Bản thân đối tượng jQuery hoạt động giống như một mảng; nó có thuộc tính length và các phần tử trong đối tượng có thể được truy cập bằng các chỉ số số của chúng từ [0] đến [length-1]. Lưu ý rằng một đối tượng jQuery thực tế không phải là một đối tượng Mảng Javascript, vì vậy nó không có tất cả các phương thức của một đối tượng Mảng thực sự như join ().


2

Thực tế là $ () luôn trả về hàm jQuery cho phép bạn xâu chuỗi các lệnh gọi hàm jQuery một cách thận trọng.


1
hỏi! $()không trả về hàm jQuery, (là $chính nó,) nhưng trả về một tập hợp được bao bọc, với tất cả các phương thức hữu ích trên đó.
Sean McMillan

1

Chủ nghĩa jquery selector mechnism

$("..") , bộ chọn jquery, được sử dụng để chọn các phần tử phù hợp.

Giá trị trả lại

Nó luôn trả về một đối tượng jquery giống mảng, có thuộc lengthtính,

Gọi phương thức trên đối tượng jquery trả về

Các phương thức jquery có thể được gọi trên đối tượng và áp dụng cho các phần tử đã chọn đó,

Truy cập phần tử gốc theo chỉ mục

Các phần tử đã chọn, được lưu trữ dưới dạng thuộc tính của đối tượng, tên thuộc tính của chúng là số chỉ mục bắt đầu từ 0,
do đó có thể được truy cập bằng chỉ mục, bắt đầu từ 0,
sau khi lấy phần tử ban đầu, bạn có thể coi nó như thể lấy bằng document.getElementXxx().

Bọc một phần tử gốc vào một đối tượng jquery

Sau khi lấy phần tử ban đầu, bạn có thể bọc nó thành một đối tượng jquery, bằng cách gọi $(originalEle),
sau đó bạn có thể gọi các phương thức jquery trên đối tượng được bọc.


0

Theo firebug, nó trả về một mảng các đối tượng phù hợp với bộ chọn của bạn. Nhưng mảng này là một đối tượng jQuery, có nhiều phương thức hơn một Mảng đơn giản.


Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.