我在获取另一个字段的索引时遇到麻烦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()
调用在最后。