我有一个带有多个select菜单的表单(版本4),其中每个select元素的id值是动态设置的。我想找到用户单击的select元素的id。
我能让这个工作起来
$('.js-example-tokenizer-ajax-data').on('select2:open', function (evt) {
myValue = $(this).attr('id');
});
但是我需要在ajax调用中使用myValue
作为data
的参数,因此需要一个获取active 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?或者,是否有办法解决时间问题?
发布于 2016-06-22 13:02:36
如果var selectedEle = $(document.activeElement)
确实得到了您想要的元素,那么只需执行document.activeElement.id
即可。
根据海报的更新更新:
在另一个堆栈溢出响应中,有人说this.context
会给出正确的元素,在这种情况下,this.context.id
会给出id。
https://stackoverflow.com/questions/37978152
复制