将数据插入具有相同名称的一个类

时间:2016-12-10 20:46:54

标签: javascript jquery html ajax

在从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);

2 个答案:

答案 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);