2011-08-25 27 views
5

Vì vậy, tôi có mã cũ của người khác mà tôi đang cố khôi phục. Tôi không quá quen thuộc với jQuery, nhưng nhà điều hành @ chỉ định điều gì?Toán tử jQuery @?

Mã này là:

v_button_format = $('#' + v_form_id).find('input[@name=button_format]').val(); 
v_content_type = $('#' + v_form_id).find('input[@name=content_type]').val(); 

Tôi đang sử dụng jQuery 1.3 và nó ném một "ngoại lệ còn tự do: Lỗi cú pháp, biểu hiện không được công nhận: [@ name = button_format]" lỗi. Có vấn đề tương thích nào không?

Trả lời

13

Đây là bộ chọn thuộc tính.

@ là một XPath-ism không còn được sử dụng trong jQuery.
Ngoài ra, các phiên bản mới hơn của jQuery yêu cầu giá trị thuộc tính phải nằm trong dấu ngoặc kép.

Vì vậy, bạn nên viết

$('#' + v_form_id).find('input[name="content_type"]').val(); 
+0

được các nhà điều hành @ tương thích ngược với jQuery hiện tại? – powtac

+1

@powtac: Tôi tin là không. – SLaks

+0

Ít tắt chủ đề, nhưng đối với những điều như vậy không phải là nó tốt hơn để sử dụng 'document.getElementsByName'? –

3

Điều đó có nghĩa attribute. input[@name=button_format] có nghĩa là the input tag with the name attribute equal to button_format.

Bạn sẽ cần phải xóa @ và báo giá button_format trong các phiên bản gần đây jQuery, tuy nhiên. Điều này có nghĩa là @ không tương thích ngược. So quoth the docs.

Lưu ý: Trong jQuery 1.3 [@attr] bộ chọn kiểu đã bị xóa (chúng không được dùng trong jQuery 1.2). Chỉ cần xóa biểu tượng “@” khỏi bộ chọn của bạn để làm cho chúng hoạt động trở lại.

+0

Cảm ơn bạn đã lưu ý về '@'! – powtac

0
input[@name=button_format] 

nghĩa trường nhập với tên thuộc tính thiết lập để 'button_format', ví dụ:

<input name="button_format"> 
0
input[@name=button_format] 

Đây là cũ selector type.please loại bỏ nếu @ nếu bạn sử dụng jQuery mới nhất cách mới là

input[name="button_format"] 
0

Lưu ý: Trong bộ chọn kiểu dáng jQuery 1.3 [@attr] đã bị xóa (chúng là không được chấp nhận trước đó trong jQuery 1.2). Chỉ cần xóa ký hiệu '@' khỏi bộ chọn của bạn để làm cho chúng hoạt động trở lại.

đó là bộ chọn không được chấp nhận, bạn phải xóa bộ lọc khỏi mã của bạn vì mã không còn được hỗ trợ và sẽ gây ra lỗi.

0

Đó là cách làm cũ của OLD.

Nó cũng giống như (và nên được thay đổi):

$('input[name="button_format"]') 

Cũng lưu ý các bắt buộc dấu ngoặc kép

0

Thuộc tính như những người khác đề cập.

My 2 cents: Các ký hiệu được lấy cảm hứng từ XPath, mà cũng biểu thị (XML) thuộc tính sử dụng một @