2012-05-11 31 views
71

Tôi đã bắt đầu sử dụng bộ công cụ Wijmo, và tình cờ gặp khá một ví dụ vài selectors tương tự như sau trong các trang tài liệu của họ:Mục đích của một dấu hai chấm hàng đầu trong bộ chọn jQuery là gì?

$(":input[type='radio']").wijradio(); 

tôi đã viết tôi như thế này:

$('input[type=radio]').wijradio(); 

Làm những việc này giống nhau hay có điều gì đó tôi đang thiếu?

Lưu ý rằng có hai điểm khác biệt ở trên: bộ chọn đầu tiên được đặt trước bằng dấu hai chấm và có dấu ngoặc kép cho loại đầu vào.

+4

Một là chuyên ngành [** ': input' **] (http://api.jquery.com/input-selector/) chọn, trong khi người kia là một Bộ chọn [** 'Element' **] chung (http://api.jquery.com/element-selector/). – mellamokb

Trả lời

72

:inputjQuery extension trong khi input là bộ chọn CSS.

textarea, buttonselect các yếu tố sẽ được đối sánh trước đây, nhưng không phải là yếu tố sau.

Loại thứ hai nhanh hơn, do đó hãy sử dụng nó cho ví dụ cụ thể radio cụ thể của bạn. Sử dụng :input khi bạn muốn "tất cả các phần tử biểu mẫu" ngay cả khi chúng không phải là các thẻ hoàn toàn <input>. Ngay cả trong trường hợp đó, đề xuất là sử dụng bộ chọn CSS chuẩn trước, sau đó sử dụng .filter(':input') trên bộ đó.

Bởi vì: đầu vào là một phần mở rộng jQuery và không một phần của đặc tả CSS , truy vấn sử dụng: đầu vào không thể tận dụng lợi thế của việc tăng hiệu suất được cung cấp bởi nguồn gốc phương pháp DOM querySelectorAll() . Để đạt được hiệu suất tốt nhất khi sử dụng: nhập để chọn các thành phần , trước tiên hãy chọn các phần tử bằng bộ chọn CSS tinh khiết, sau đó sử dụng .filter (": input").

Trong nguồn 1.7.2, các: bộ lọc đầu vào kiểm tra một biểu thức chính quy so với nodeName:

input: function(elem) { 
      return (/input|select|textarea|button/i).test(elem.nodeName); 
}, 
+0

Điều đó có ý nghĩa, cảm ơn!Và các loại dấu ngoặc kép là hoàn toàn tùy chọn? –

+1

Thành thật mà nói, tôi đã không bao giờ sử dụng '[type =]' với ': input' bởi vì nếu tôi đang tìm kiếm một kiểu cụ thể, sử dụng': input' để có được tất cả chúng đầu tiên có vẻ dài. Đối với các bộ chọn CSS thuần túy, sự hiểu biết của tôi là dấu ngoặc kép là tiêu chuẩn, nhưng các trình duyệt được tha thứ. Bạn có thể nhanh chóng kiểm tra nó bằng/không có ở đây http://reference.sitepoint.com/css/css3attributeselectors/demo –

+0

do đó $ (": checked") cho các hộp kiểm tra .. đây cũng là phần mở rộng jquery? –

6

Bộ chọn :input về cơ bản chọn tất cả các điều khiển form (yếu tố đầu vào, văn bản, chọn và nút) trong đó bộ chọn input chọn tất cả các phần tử theo tên thẻ input.

Vì nút radio là phần tử form và cũng có thể sử dụng thẻ input để cả hai có thể được sử dụng để chọn nút radio. Tuy nhiên cả hai cách tiếp cận khác nhau theo cách họ tìm thấy các yếu tố và do đó mỗi phương pháp có lợi ích hiệu suất khác nhau.

14

chọn $("input") sẽ chọn duy nhất các yếu tố của các loại đầu vào

trong khi $(":input") bộ chọn sẽ bắt tất cả các yếu tố đầu vào (chẳng hạn như văn bản, chọn, đầu vào, v.v.)

để biết thêm thông tin, hãy truy cập tài liệu chính thức về jQuery các :input chọn tại địa chỉ:

http://api.jquery.com/input-selector/

Các vấn đề liên quan