2016-09-14 12 views
0

私はjqueryのを使用しようとしていると、それはこの型の構造でGET値に各関数です:使用して、私が試したjQueryの.each

 <div id="test"> 
     <p><input name="name1" value="Z1"></p> 
     <p><input name="name2" value="Z2"></p> 
     <p><input name="name3" value="Z3"></p> 
     <p><input name="name4" value="Z4"></p> 
     </div> 

 $('#test').find('input').each(function() { } 
     $('#test > p').children('input').each(function() { } 

値は私が アラート($(this).value)を使って取得します。 は常に '未定義'です。何が起こっているのでしょうか?

+2

いずれかのトラバーサル方式が機能します。しかし、jQueryを使用している場合、値を決定する構文は['$(this).val()'](http://api.jquery.com/val/)です。それ以外の場合は、バニラJavaScript:['this.value'](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#attr-value)。ここには[例](https://jsfiddle.net/rfw41vko/)があります。 – showdev

答えて

1

代わりにあなたがそうのように、あなたは.each()方法throughtすばやくアクセスできるようになりますdiv上のすべての入力を、検索するセレクタ#test inputを使用することができます。

var values = []; 
$('#test input').each(function(){ 
    values.push($(this).val()); 
}); 
console.log(values); 

詳細については、jsFiddleをご確認ください。

希望します。 乾杯。

+0

それは私がやろうとしていることのための素晴らしいアイデアです...ありがとう – Allen

+0

@Allenこの答えがあなたの問題を解決した場合、それを将来の参考のために答えとしてマークしてください。 :) –

0

それぞれの<p>タグには他の兄弟があり、それぞれの関数で入力を見つけて値を取得するため、それぞれのタグを調べる必要があります。

これは動作します:

$('#test > p').each(function(){ 
    var value = $(this).find('input').val(); 
}); 
+1

彼の方法も機能します。コレクションで '.find()'を使うと、すべてのメンバーを検索し、結果を結合します。 – Barmar

+0

ありがとうbendouglas ...それはそれでした.. – Allen

0
 $('#test input').each(function(i,v){ 
      console.log($(this).val()); 
     });  

説明:我々は#testの内側に直接または推移全てinput秒を探していることを意味'#test input'のセレクタを持っています。ここまでは順調ですね。しかし、我々は彼らのvalueを必要とします。したがって、関数内には$(this).val()の結果がログに記録され、値がコンソールに出力されます。

2

要素を取得する2つの方法はうまくいきます。入力値にどのようにアクセスしているかによって、undefinedが表示されます。.val()ではなく、.valueです。だから、

$('#test').find('input').each(function() { 
 
    $(document.body).append($(this).val()); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div id="test"> 
 
    <p><input name="name1" value="Z1"></p> 
 
    <p><input name="name2" value="Z2"></p> 
 
    <p><input name="name3" value="Z3"></p> 
 
    <p><input name="name4" value="Z4"></p> 
 
</div>

0

最初のものはチームメイトを働いています。私はあなたの問題が何であるか分かりません。

https://jsfiddle.net/tsj0w29x/$('#test').find('input').each(function() { alert($(this).value); }

+2

あなたのフィドルは構文エラーがあります、それは閉じて ')'がありません。 – Barmar

+0

訂正していただきありがとうございます。 – Jayee