2011-12-12 37 views
6

Trường hợp jQuery: chọn hộp văn bản có nhạy cảm không?Is: text case sensitive?

Ví dụ:

<input type="TEXT"> 

Không phù hợp nhưng:

<input type="text"> 

Liệu trận đấu.

Điều này có vẻ như vậy. Tôi chỉ đang tìm kiếm xác minh.

EDIT

Người ta trông như ngay cả những [type = text] selector là trường hợp nhạy cảm trong Chrome và Firefox nhưng không IE8 (trong chế độ văn bản IE8)

+1

Không, nó không phải là trường hợp nhạy cảm như bạn có thể thấy trong jsfiddle này: http://jsfiddle.net/5RMhK/2/ – sally

+2

'$ (': text') tương đương với $ ('[type = text] ') '(http://api.jquery.com/text-selector/). Không giống như: http://jsfiddle.net/ZWfb6/ – Eliasdx

+0

@sally Phần tử đầu tiên ** không ** phù hợp .. http://jsfiddle.net/6VzNv/ – Smamatti

Trả lời

4

Sửa: mặc dù nghiên cứu của tôi Tôi đã vẽ số kết thúc hoàn toàn sai lúc đầu. Người trả lời đã được cập nhật: O (kudo's go to @ThiagoSantos người đã có câu trả lời đúng từ đầu: D).

Các jQuery ":text" documentation trạng thái:

Bởi vì: văn bản 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: văn bản không thể tận dụng lợi thế của việc tăng hiệu suất cung cấp theo phương pháp tự nhiên DOM querySelectorAll().

Nếu bạn bổ nhào vào source of 1.7.1 có vẻ như chọn này được thực hiện như:

text: function(elem) { 
    var attr = elem.getAttribute("type"), type = elem.type; 
    // IE6 and 7 will map elem.type to 'text' for new HTML5 types (search, etc) 
    // use getAttribute instead to test this case 
    return elem.nodeName.toLowerCase() === "input" && "text" === type && (attr === type || attr === null); 
} 

Đối <input type="tEXt" /> giá trị của attr hóa ra là "văn bản", mà sẽ không phù hợp type. Nhiều bất ngờ của riêng tôi thì:

Câu trả lời được cập nhật nên: : văn bản là trường hợp nhạy cảm

+1

Chẳng phải elem.getAttribute ("type") trả về "tEXt" trong ví dụ của bạn, trong trường hợp này nó có phân biệt chữ hoa chữ thường không? –

+0

Aye, tôi xin lỗi. Tôi đã cập nhật câu trả lời của mình ngay bây giờ. Kudo của đi đến những người khác, những người đã có jsfiddles chính xác từ đầu * giấu trong xấu hổ *: D – Jeroen

+0

Kết luận được đánh giá cao. ; 0) Trên thực tế, nếu tôi đọc đúng liên kết sau, thì getAttribute phải viết thường khi DOM là một tài liệu HTML. https://developer.mozilla.org/en/DOM/element.getAttribute –

3

Nó có vẻ như đây là chàng trai nhạy cảm canse .. Vì vậy, trong thực tế sau đây là không đúng sự thật

$ (': text') tương đương với $ ('[type = text]')

đây là một mẫu .. chỉ có một cảnh báo cho

này

http://jsfiddle.net/huX3M/

2

Tôi sẽ nói, trước tiên, phân biệt chữ hoa chữ thường. Xem this jsFiddle.

Cho rằng <input type="text"> nên xử lý chính xác<input type="TEXT">, tôi tin rằng đây có thể là lỗi.

Trong mọi trường hợp, tốt hơn là sử dụng [type="text"], vì điều đó có thể được phân tích cú pháp theo querySelectorAll và do đó sẽ có lợi ích hiệu suất đáng kể.