2012-01-24 5 views
0
id = [<input type=​"hidden" name=​"id" value=​"test_id">​, <input type=​"hidden" name=​"id" value=​"test_id">​] 
id.val() 
Result: "test_id" 

私は2つのHTML Elmentsを持つ "idオブジェクト"を持っています。 1つのajax getで2つの同一の要素を更新するので同じことがあります。オブジェクトのJQuery .val()

フォームを検索するセレクタでこの変数 "id"を取得しました。

私の質問:

は、両方の要素のみ、このオブジェクト「ID」の最初の要素をチェック.val()ですか?

要素の1つが異なる値を持つ場合はどうなりますか。

この質問の後に何をしましたか?

  • 私はobjct
  • から両方の値を取得するために、今.map()を使用していますがIDの平等のためのチェックを追加しました。
  • )= jQueryのドキュメントに最初の大きな文(説明)をスキップしないよう

おかげで多くのことを学びました!

+1

を使用あなたがに3行のスクリプトを記述することができhttp://api.jquery.com/val/ –

+0

を尋ねる前にドキュメントを見て簡単ですこれをテストしてください。 – Archer

+0

@Archer 3行でこれをどのようにテストできますか? – Azd325

答えて

2

.val()は、実行される要素のセットの最初の要素の値をチェックします。 .val()に次のような関数を渡した場合:.val(function (index, value) {})は、関数が実行される要素のセット内のすべての要素の値を取得できます。

あなたがチェックアウトする.val()のためのドキュメントをお勧めします:ここでhttp://api.jquery.com/val

$('input').val(function() { 
    console.log(this.value); 
    return this.value; 
}); 

はデモです:http://jsfiddle.net/mV4U6/2/(あなたが任意の入力の値を変更する場合は、すべての入力の値はconsole.log EDになります)

これは、フォームの要素がその値を保持するように値を返す必要があることを示しています。ただし、各入力の値を取得するために.map()を使用することができます。ここでは

$('input').map(function (index, element) { 
    console.log(this.value); 
}); 

.map()を使用してデモです:http://jsfiddle.net/mV4U6/3/

...も可能ループ付き:

var $inputs = $('input'); 
for (var i = 0, len = $inputs.length; i < len; i++) { 
    console.log($inputs[i][0].value);//or inputs[i].val() will also work 
} 
+0

'val'関数の構文は、取得するためではなく設定するためのものです。すべての値を取得したい場合は、 'val'ではなく' map'を使うべきでしょう。 – lonesomeday

+0

@lonesomedayありがとう、それは良い観察です。 '.val()'を使っている間に入力の値を返すか、 '.map()'または '.each()'を使うだけです。 – Jasper

+1

'val'を使うのは確かに難しいことです。 [これは 'map'を使う最良の方法の例です。](http://jsfiddle.net/mV4U6/5/)。 – lonesomeday

1

.val()セレクタに一致する最初の要素の値を返します。あなたが別のユニーク IDを選択するか、classidを交換する必要がありますので

また、IDは、一意である必要があります。もう1つの方法は、id属性を削除し、名前として$('[name="id"]')を選択することです。

1

jQueryのソースから:valでテストされた要素が関係なくがいくつあるかまたは値が何であるか、セットの最初の1、常に[0]ではありません

val: function(value) { 
    var hooks, ret, isFunction, 
     elem = this[0]; 

(Line 161 of src/attributes.js)

0

要素のjQueryコレクションの場合、.val()は最初の値のみを返します。

1
jQuery API docsから

ヴァル()= マッチした要素の集合内の最初の要素の現在の値を取得します。

したがって、セレクタに一致する最初の要素でのみ機能します。

2

したい場合は、すべての値がマップ機能

var ids = id.map(function(index, element){ 
    return $(this).val(); 
}) 
関連する問題