Javascript 如何在jQuery中选择不是div的父级或同级的div
我有很多这样的舞曲Javascript 如何在jQuery中选择不是div的父级或同级的div,javascript,html,jquery,Javascript,Html,Jquery,我有很多这样的舞曲 <div class="body-row row m-0"> <div class="px-2 col-3"> <select name="item_type[]" class="form-control invoiceType" required>
<div class="body-row row m-0">
<div class="px-2 col-3">
<select name="item_type[]" class="form-control invoiceType" required>
<option value="newitem">New Item</option>
<option value="presetitem">Present Item</option>
<option value="discount">Discount</option>
<option value="subsidy">Subsidy</option>
</select>
</div>
<div class="px-2 col-6 item-description" style="display: flex;">
<input type="text" class="form-control" name="description[]" placeholder="Add Invoice Description" required style="flex: 1">
</div>
<div class="px-2 col-2">
<input type="number" class="form-control" name="amount[]" placeholder="0" required>
</div>
<div class="col-1 del-icon-container"><i class="fas fa-trash del-invoice-item"></i></div>
</div>
目前,它对所有div都进行了更改,因为它们都具有相同的类名您可以使用jQuery的DOM遍历方法,根据对事件处理程序中元素的引用,将元素彼此关联起来。在这种情况下,您可以使用
closest()
查找公共父容器,然后使用find()
获取所需的元素
请注意,在下面的示例中,:selected
选择器不是必需的-您可以直接从select
获取val()
。此外,您可以通过设置元素的html()
组合empty()
和append()
$(document).on('change','.invoiceType',function(){
console.log('change');
让$field=$(这个);
let invoiceType=$field.val();/:不需要选择
如果(invoiceType=='newitem'){
$field.closest('.body行').find('.item description').html(``);
}
});代码>
新项目
本项目
优惠
补贴
新项目
本项目
优惠
补贴
您可以将此$('.item description')
更改为$(this).closest(“div”)。下一步(“.item description”).empty()
如果您可以修改html,您还可以在select中添加一个数据属性,该属性将通过唯一id引用“its”item description。谢谢,我不必使用最后一个,因为当itemInvoice值更改时,我添加了不同的html,这很有意义:)很乐意帮助
$(document).on('change', '.invoiceType',function() {
var invoiceType = $(this).find(":selected").val();
if(invoiceType == 'newitem') {
$('.item-description').empty();
$('.item-description').append(`
<input type="text" class="form-control" name="description[]" placeholder="Add Invoice Description" required style="flex: 1">
`);
}
});