我有一个带有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?或者,有没有办法解决时间问题?
答案 0 :(得分:0)
如果var selectedEle = $(document.activeElement)
确实获得了您想要的元素,那么您只需document.activeElement.id
即可。
在不同的堆栈溢出回答中有人说this.context
会给你正确的元素,在这种情况下this.context.id
会给你id。