在从mysql数据库确认库存编号后,我有一个工作行克隆方案(多个动态行)。我想做的事情(但无法弄清楚)是如何将库存数据仅插入到由于克隆而具有相同类名的下一个DIV batch_item_desc
。持续发生的事情是库存数据被插入每一行,而不是"这个"行。
HTML:
<div class="multi-field-wrapper">
<div class="multi-fields">
<div class="multi-field row">
<div class="col-md-2 item_num_div">
<div class="form-group">
<input type="text" class="form-control input-sm batch_item_num"
name="item_num[]">
</div>
</div>
<div class="col-md-2 batch_item_desc"></div>
<div class="col-md-2">
<button type="button" class="btn btn-danger remove-field btn-sm">
<span class="glyphicon glyphicon-minus"></span>
</button>
</div>
</div> <!-- End Div multi-field && row -->
</div> <!-- End div multi-fieldS -->
</div> <!-- end div wrapper -->
jQuery的:
$('.multi-field-wrapper').each(function() {
var $wrapper = $('.multi-fields', this);
$('.multi-field .remove-field', $wrapper).click(function() {
if ($('.multi-field', $wrapper).length > 1)
$(this).parent('.multi-field').remove();
});
//-------- Batch Inventory --------------
$(".batch_item_num", $(this)).keyup(function(e) {
var item_num = $(this).val();
if (item_num.length == 9) {
$.get('inventory/api.php', {"action":"batch_item_num","item_num":item_num},
function(data, result) {
var desc = data;
$('.item_num_div').next('.batch_item_desc').html(desc);
$('.multi-field:first-child', $wrapper).clone(true).appendTo($wrapper).find('input').val('').focus();
});
}
});
});
对于我的生活,我不能让这一行显示有问题的单行的库存数据,它会插入所有行。
$('.item_num_div').next('.batch_item_desc').html(desc);
答案 0 :(得分:1)
您应该使用当前的jQuery元素$(this)
而不是类item_num_div
选择器,它将选择此类的所有元素:
$(this).next('.batch_item_desc').html(desc);
此外,您应该转到父row
,然后选择batch_item_desc
,因为它不是batch_item_num
的兄弟:
$(this).closest('.row').find('.batch_item_desc').html(desc);
请注意,$(this)
回调中的$.get
不再引用当前元素,您应该在请求之前将$(this)
存储在另一个变量中,例如:
var item_num = $(this).val();
var _this = $(this);
然后在回调中使用此变量而不是$(this)
:
_this.closest('.row').find('.batch_item_desc').html(desc);
希望这有帮助。
答案 1 :(得分:0)
您可以使用.first()
仅选择匹配元素集中的第一个元素:
$('.item_num_div').next('.batch_item_desc').first().html(desc);