获取壁橱select2 jquery的值

获取壁橱select2 jquery的值,jquery,jquery-select2,Jquery,Jquery Select2,我正在尝试获取最接近的值()从单击保存按钮的位置选择2个值。保存条目 我正在尝试使用$(this.closest('select').val()获取select的值但它将返回未定义。我尝试了许多变体,但由于select2生成其他HTML,因此在尝试获取该值时似乎存在问题。我在页面上有多个选择,所以我必须使用一个类 如何获取最近选择的值 <div class="input-group"> <select class="form-control select2custom"

我正在尝试获取
最接近的值()
从单击保存按钮
的位置选择2个值。保存条目

我正在尝试使用
$(this.closest('select').val()获取select的值但它将返回未定义。我尝试了许多变体,但由于
select2
生成其他HTML,因此在尝试获取该值时似乎存在问题。我在页面上有多个选择,所以我必须使用一个类

如何获取最近选择的值

<div class="input-group">
    <select class="form-control select2custom" style="width: 100%">'+data+'</select>
    <span class="input-group-btn">
        <button class="btn btn-primary btn-sm save_entry" type="button" data-id="'+row_id+'">
            <i class="fas fa-check"></i>
        </button>
    </span>
</div>
closest()
只搜索元素的父元素。选择元素不是按钮的父元素。找到div,然后找到子select

给定标记,一种可能的方法是找到最近的输入组,然后找到嵌套的select2custom元素,即select

$(this).closest('.input-group').find('.select2custom')

Taplar的答案很好,您也可以用
输入组
类替换
delegateTarget
(这里是
文档
),以更轻松地找到
选择符

$('.input group')。在('click','save_entry',函数(e){
console.log($(e.delegateTarget).find('select').length)
})

“+数据+”
点击我

这很正常,它不是
的父项。save_entry
(或其本身)而是一个“兄弟”,您必须使用
prev()
而不是
closest()
刚刚发现
var new_value=$(this.parent().parent().find('select').val()获取值。有更好的方法吗?@GameTag它不是兄弟。它是父元素的同级。@Taplar是的,我没有看到包装器。您也可以使用
$(this.parent().sibles('select').val()当然可以,但是这稍微依赖于现有的dom结构。在类中使用“最近”和“查找”只会将标记限制为某种形式的父子关系。这些元素可以四处移动,并且仍然有效@Rohit.007是的,但是CSS类的改变会阻止它。当然,这两种方法都有不同程度的脆弱性。但所有代码都是这样@Rohit.007
$(this).closest('.input-group').find('.select2custom')