我有一个div结构如下:
<div id="items_block" class="col-xs-12" style="margin-bottom:15px;">
<div class="item material_item" style="border:1px solid #D9D6D6; padding:8px; background:#E7E3E3; margin:10px 0">
<div class="form-group ">
<label for="item_measurement_id" class="col-md-3 control-label">Item Measurement Id</label>
<div class="col-md-9">
<select class="required form-control col-md-12 item_measurement" id="item_measurement_id" autocomplete="off" required="true" name="item_measurement_id[]">
<option value="" selected="selected">Select Item</option>
<option value="1">pAPER</option><option value="2">KirloskarGREEN</option>
</select>
</div>
</div>
</div>
我有一个add new
按钮,可以克隆div类material_item
:
$('.add_more_item').click(function(e) {
item++;
e.preventDefault();
var $item = $('.item');
var $clone = $item.clone(true).removeClass('item'); // Clone item
$clone.appendTo("#items_block");
show_hide_item(item);
});
现在,我想在用户更改rate
时更新item_measurement_id
字段。 AJAX如下:
$('.item_measurement').change(function(e) {
var url = '';
var data = '';
$this = $(this);
var item_measurement_id = $this.val();
$parent = $this.parent(); //$('.material_item');
url += '{{ route("rest.item_values") }}';
data += '&item_measurement_id='+item_measurement_id;
$.ajax({
data : data,
url : url,
type : 'get',
dataType : 'json',
error : function(resp) {
console.log(resp);
},
success : function(resp) { console.log(resp.latest_rate);
$parent.find('.rate').val(resp.latest_rate);
}
});
});
但我在费率领域得到了任何东西!注意:我可以在控制台中看到正确的值
答案 0 :(得分:1)
在您的代码中,
$parent = $this.parent(); //$('.material_item');
引用直接父级,即$(&#39; div.col-md-9&#39;)
你应该使用
$this.parents('.material_item')
访问您正在尝试的元素。
另外,我建议使用var实例化$ this和$ parent以确保它们的范围正确,例如:
var $this = $(this);
var $parent = $this.parent();