如何从jquery .each()函数中获取索引值


How to get index value from jquery .each() function

我在获取另一个字段的索引时遇到麻烦Jquery .each()函数。我想获取的值输入名称为line_id[]:

$('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);
                        });

但是我希望我能在这里找到一个更好的答案:)

我认为最简单的方法就是使用。prev()函数:

$('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);
});
注意,这只适用于将隐藏的输入放在 td元素中,这是它应该在的地方:
<?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 } ?>

要将值映射到数组,您可以尝试.map()函数:

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

请注意,它给你一个jQuery对象,而不是一个真正的数组,因此.toArray()调用在最后。