2012-12-21 19 views
12

Làm cách nào để thoát khỏi các thuộc tính trong bộ chọn attibute css/js [attr=value]?Cách thoát đúng các giá trị thuộc tính trong bộ chọn thuộc tính css/js [attr = value]?

Cụ thể, điều này có đúng không?

document.querySelector('input[name="test[33]"]') 

Tôi đang tìm cách "tiêu chuẩn" để làm điều này, nếu có, bởi vì tôi không muốn sizzle sử dụng một chức năng dự phòng nặng-to-thực

+0

Yes. Bạn thử nó. – codingbiz

+1

Có điều này là chính xác. – scoota269

Trả lời

9

Vâng, đó là điều đúng tiếp cận. Số Selectors Level 3 specification nêu rõ:

Giá trị thuộc tính phải là mã định danh CSS hoặc chuỗi.

Ví dụ trong câu hỏi của bạn sử dụng chuỗi làm giá trị thuộc tính. "Số nhận dạng" được định nghĩa như sau:

Trong CSS, số nhận dạng ... chỉ có thể chứa các ký tự [a-zA-Z0-9] và ISO 10646 ký tự U + 00A0 và cao hơn, cộng với dấu nối (-) và dấu gạch dưới (_); chúng không thể bắt đầu bằng một chữ số, hai dấu gạch ngang, hoặc dấu gạch ngang theo sau là một chữ số. Định danh cũng có thể chứa các ký tự thoát và bất kỳ ký tự ISO 10.646 như một mã số ...

Vì vậy, sau đó, nó cũng là hợp pháp để thoát khỏi nhân vật đặc biệt và bỏ qua các dấu ngoặc kép:

document.querySelector('input[name=test\\[33\\]]') 
+0

tuyệt vời! cảm ơn bạn đã trả lời và báo cáo thông số – skyline26

+0

@toPeerOrNotToPeer - Bạn được chào đón, vui vì tôi có thể giúp :) –

+0

@JamesAllardice có chức năng nào (do người dùng xác định) để thoát khỏi giá trị không? 'document.querySelector ('[name ="' + escapeattr (giá trị) + '"]')' cảm ơn – skyline26