Sto selezionando un array di oggetti di input usando jQuery e sto incontrando un problema interessante quando tento di concatenare più metodi dopo aver selezionato uno degli elementi dell'array. Qualcuno può spiegarmi perché ho questo comportamento?Perché array [0] restituisce un oggetto diverso da array.first utilizzando jQuery e perché non posso usare .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">
]
Se seleziono uno degli elementi che utilizzano jQuery .first()
o .last()
e quindi chiamare .val()
, ottengo il valore atteso di "138"
.
Quando si tenta di utilizzare una posizione nell'array, posso riportare l'elemento dell'array:
var input = jQuery('.custom-size').first().find('input:hidden')[1]
returns =>
<input name="custom_order[custom_sizes_attributes][0][_destroy]" type="hidden" value="0">
non posso chiamare .val()
su questo oggetto tuttavia. Invece ricevo questo messaggio di errore:
TypeError: Object #<HTMLInputElement> has no method 'val'
posso usare .slice(x,y)
per restituire il singolo elemento, ma questo sembra piuttosto sciocco. Cosa mi manca qui.
Mettere insieme un jsfiddle che dimostra il problema, in questo modo possiamo giocarci e magari aiutare. – michaelward82