我有一个表单,其中包含使用 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/