Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在jQuery中选择不是div的父级或同级的div_Javascript_Html_Jquery - Fatal编程技术网

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">
            `);
        } 
    });