jQueryを使用して入力オブジェクトの配列を選択していますが、配列要素の1つを選択した後、複数のメソッドをチェーンしようとすると、興味深い問題が発生します。なぜ私がこの振る舞いをするのか誰かが私に説明できますか?
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">
]
.first()
jQueryまたはを使用して要素の1つを選択して.last()
からを呼び出すと.val()
、期待値のが得られます"138"
。
配列内の場所を使用しようとすると、配列の要素を返すことができます。
var input = jQuery('.custom-size').first().find('input:hidden')[1]
returns =>
<input name="custom_order[custom_sizes_attributes][0][_destroy]" type="hidden" value="0">
.val()
ただし、このオブジェクトを呼び出すことはできません。代わりに、次のエラーメッセージが表示されます。
TypeError: Object #<HTMLInputElement> has no method 'val'
単一の要素を返すために使用できます.slice(x,y)
が、これはかなりばかげているようです。ここで何が欠けていますか。