如何查找活动的Select2元素的id

时间:2016-06-22 20:59:58

标签: javascript jquery jquery-select2

我有一个带有Select2(版本4)生成的多个选择菜单的表单,其中每个select元素的id值是动态设置的。我想找到用户点击的select元素的id。

我可以让这个工作

$('.js-example-tokenizer-ajax-data').on('select2:open', function (evt) {
        myValue = $(this).attr('id');
 });

但我需要在ajax调用中使用myValue作为data的参数,因此需要获取有效select2元素的id的选项。我看过帖子提示var selectedEle = $(document.activeElement),但我不知道如何从那里获取id。

更新

似乎我可以将其作为数据参数

的值包含在内
data: getSelectedElement(function() {
            return JSON.stringify({variable: myValue})
        }),

功能为

function getSelectedElement(callback) {
        $('.js-example-tokenizer-ajax-data').on('select2:opening', function (evt) {
            myValue = $(this).attr('id');
            callback();
        });
    }

但是仍有一些时间问题,因为ajax似乎在点击select元素之前触发,因为当我加载页面时出现错误'NoneType' object has no attribute '__getitem__'我收集了因为当页面加载时myValue没有值。

是否还有其他选项可以获取所选select2元素的ID?或者,有没有办法解决时间问题?

1 个答案:

答案 0 :(得分:0)

如果var selectedEle = $(document.activeElement)确实获得了您想要的元素,那么您只需document.activeElement.id即可。

根据海报的更新进行更新:

在不同的堆栈溢出回答中有人说this.context会给你正确的元素,在这种情况下this.context.id会给你id。