2011-07-26 18 views
1

jquery .each()関数から別のフィールドのインデックスを取得できません。私は名前で 入力の値を取得したい[] LINE_ID:jquery .each()関数からインデックス値を取得する方法

$('input[name=bl_caps[]]').each(function(index){ 

    var line_id = $('input[name=line_id[]]').val(); 
    var caps = $(this).val(); 
    alert('line id: ' + line_id + '<br/>' + 'caps: ' + caps); 

}); 

HTML:

<?php foreach(){ ?> 
<input type="hidden" name="line_id[]" id="line_id" value="<?php echo $sbl->BusLineID; ?>"/> 
<td><input type="text" name="bl_caps[]" id="bl_caps"/></td> 
<?php } ?> 

を私はこのようにそれを行うことを計画しています:

var line_id = new Array(); 

         $('input[name=line_id[]]').each(function(index){ 
          line_id[index] = $(this).val(); 
         }); 


         $('input[name=bl_caps[]]').each(function(index){ 

          var line_ids = line_id[index]; 
          var caps = $(this).val(); 
          alert('line id: ' + line_ids + '<br/>' + 'caps: ' + caps); 

         }); 

しかし、私はここでより良い答えを見つけることができると期待しています:)

+0

私はちょっとあなたが欲しいものとして混乱しています。あなたが持っているものは、あなたがインデックス(0,1,2,3 ...) – Matt

答えて

1

私はあなたがしていることを行うための最も簡単な方法だと思います

<?php foreach(){ ?> 
<td> 
    <input type="hidden" name="line_id[]" id="line_id" value="<?php echo $sbl->BusLineID; ?>"/> 
    <input type="text" name="bl_caps[]" id="bl_caps"/> 
</td> 
<?php } ?> 

:これが唯一それがとにかくあるべき場所であるあなたが隠し入力を置けば内部td要素を、動作することを

$('input[name=bl_caps[]]').each(function(){ 
    // get the previous sibling 
    var line_ids = $(this).prev().val(); 
    var caps = $(this).val(); 
    alert('line id: ' + line_ids + '<br/>' + 'caps: ' + caps); 
}); 

注:やろうとすると、.prev()機能を使用することです値を配列にマッピングするには、.map()関数を試してみます:

var line_ids = $('input[name=line_id[]]').map(function(){ 
    return $(this).val(); 
}).toArray(); 

実際の配列ではなく、jQueryオブジェクトを与えることに注意してください。最後に.toArray()が呼び出されます。

関連する問題