Tôi đang chọn một mảng các đối tượng đầu vào bằng cách sử dụng jQuery và tôi đang chạy vào một vấn đề thú vị khi cố gắng kết hợp nhiều phương thức sau khi chọn một trong các phần tử mảng. Bất cứ ai có thể giải thích cho tôi tại sao tôi nhận được hành vi này?Tại sao mảng [0] trả về một đối tượng khác với array.first bằng cách sử dụng jQuery và tại sao tôi không thể sử dụng .val()?
jQuery('.custom-size').first().find('input:hidden')
returns =>
[<input id="custom_order_custom_sizes_attributes_0_size_id" name="custom_order[custom_sizes_attributes][0][size_id]" type="hidden" value="138">
,
<input name="custom_order[custom_sizes_attributes][0][_destroy]" type="hidden" value="0">
]
Nếu tôi chọn một trong các yếu tố sử dụng jQuery .first()
hoặc .last()
và sau đó gọi .val()
, tôi nhận được giá trị kỳ vọng của "138"
.
Khi tôi cố gắng sử dụng một vị trí trong mảng đó, tôi có thể trả lại phần tử của mảng:
var input = jQuery('.custom-size').first().find('input:hidden')[1]
returns =>
<input name="custom_order[custom_sizes_attributes][0][_destroy]" type="hidden" value="0">
tôi không thể gọi .val()
trên đối tượng này tuy nhiên. Thay vào đó tôi nhận được thông báo lỗi này:
TypeError: Object #<HTMLInputElement> has no method 'val'
tôi có thể sử dụng .slice(x,y)
trở lại các yếu tố duy nhất, nhưng điều này có vẻ khá ngớ ngẩn. Tôi đang thiếu gì ở đây.
Đặt cùng một jsfiddle rằng chứng minh vấn đề, theo cách đó chúng ta có thể chơi với nó và có thể giúp đỡ. – michaelward82