javascript - 如何查找事件 Select2 元素的 id

标签 javascript jquery jquery-select2

我有一个表单,其中包含使用 Select2(版本 4)生成的多个选择菜单,其中每个选择元素的 id 值都是动态设置的。我想找到用户点击的选择元素的 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 似乎在单击选择元素之前触发,因为当我加载页面时,我收到错误 'NoneType' object has no attribute '__getitem__' I收集,因为加载页面时 myValue 没有值。

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

最佳答案

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

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

在另一个堆栈溢出答案中,有人说 this.context 将为您提供正确的元素,在这种情况下 this.context.id 将为您提供 id。

关于javascript - 如何查找事件 Select2 元素的 id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37978152/

相关文章:

javascript - 为什么字符串与数字比较在Javascript中有效

javascript - 按下按钮时写入 Ajax 返回的数据

javascript - D3.js : Line Generation with dates

jquery - Select2 在移动设备上友好

javascript - JQuery select2 e.val 更改时未定义

javascript - 如何捕获中间的事件

javascript - 滚动时更改 div 样式

javascript - jQGrid 列选择器模式覆盖

javascript - jQuery 禁用并清除 (Select2) 字段的值

javascript - 我如何在jquery中获取预约时间(从时间,到时间)