2012-03-14 30 views
17

Cú pháp jquery chính xác cho cuộc gọi getElementsByName là gì?jQuery tương đương với "getElementsByName"

Đây là mã javascript của tôi:

var test = document.getElementsByName(tableName)[0]; 

sử dụng này được trả lại một giá trị khác nhau:

var test = $("[name=tableName]"); 

Cảm ơn trước

+0

bạn có thể đưa ra ví dụ về kết quả bạn đang nhận được và chúng khác nhau như thế nào không? – deltree

Trả lời

4

Tháo chỉ số từ báo cáo kết quả đầu tiên

Đây là bình đẳng.

var test = document.getElementsByName(tableName); 
var test = $("[name=tableName]"); 
+0

làm cách nào tôi có thể truy cập cùng một chỉ mục [0] trong jquery? – user1258430

+0

$ ("[name = tableName]"). Get (0); – westo

+2

@ user1258430 Chỉ '[0]' tác phẩm ... '$ (" ... ") [0]' –

2

"[name=tableName]" là cú pháp không đúng theo 2 cách. Trước tiên, bạn nên đặt tên của bạn trong dấu ngoặc kép, vì vậy nó phải là "[name='tableName']" và thứ hai, trong trường hợp đầu tiên, bạn đang sử dụng một biến và trong chuỗi thứ hai, vì vậy trong thực tế nó shoudl là "[name='" + tableName + "']"

cuộc gọi tốt cũng trên thực tế là bạn có một chỉ số trên cuộc gọi getelementsbyname() của mình, nếu bạn chọn mục [0] thì nó sẽ chỉ trả lại một mục.

+0

làm cách nào tôi có thể trả về cùng một chỉ mục [0] trong cú pháp jquery? – user1258430

+1

'$ (" [name = '"+ tableName +"'] ").first(); ' – deltree

21

Sử dụng dấu ngoặc kép quanh các attribute selector:

$('[name="somenamehere"]'); 

Nếu bạn cần phải sử dụng một biến trong vòng một chọn, bạn cần phải sử dụng dây nối để nhận được giá trị của biến:

$('[name="' + tableName + '"]'); 

Thông thường người ta nên tránh sử dụng thuộc tính [name] có lợi cho thuộc tính [id], bởi vì lựa chọn sẽ đơn giản hơn như:

$('#someidhere'); 
-or- 
$('#' + tableID); 
+0

Nó không hoạt động với dấu ngoặc kép trong các phiên bản cũ của jQuery? –

+0

@ ŠimeVidas, tôi nhớ rõ ràng đang chạy vào các vấn đề với dấu ngoặc kép trên bộ chọn thuộc tính với phiên bản cũ hơn của jQuery. Tôi có thể hoàn toàn sai lầm. – zzzzBov

+0

@ ŠimeVidas, tôi nghĩ rằng tôi đã có nó ngược, tôi nghĩ rằng các phiên bản cũ hơn của jQuery * chỉ hỗ trợ các giá trị thuộc tính được trích dẫn và các phiên bản mới hơn hỗ trợ các giá trị thuộc tính được trích dẫn hoặc không được trích dẫn. – zzzzBov

0

nếu bạn muốn có được một giá trị phần tử sử dụng mã này:

var test1 = $("[name='tableName']").val(); 
alert(test1); 

Những đều bình đẳng để có được giá trị của chỉ số cụ thể []:

Đối với cùng một chỉ số [0]

var test2 = $("[name='arryname[]']")[0]; 
alert(test2.value); 

var test3 = $("[name='arryname[]']").get([0]); 
alert(test3.value); 
Các vấn đề liên quan