jQuery 从 select2 选择的选项中获取属性值
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/19155264/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Get attributes values from select2 selected option
提问by Leon van der Veen
I'm using the Select2 plugin from http://ivaynberg.github.io/select2/select2-latest.htmlwhat works fine but i'm having a problem to get the values from the options attributes.
我正在使用来自http://ivaynberg.github.io/select2/select2-latest.html的 Select2 插件,它工作正常,但我在从选项属性中获取值时遇到问题。
I've got a select menu like this:
我有一个这样的选择菜单:
<select name="invoice_line[0][vat]" class="vat">
<option value="20440" data-value="21.00" data-name="20440" selected="selected">21%</option>
<option value="20441" data-value="6.00" data-name="20441">6%</option>
<option value="20442" data-value="0.00" data-name="20442">0%</option>
</select>
How can I get the values of the attributes 'data-value', 'data-name' and 'value' of the selected option?
如何获取所选选项的属性“数据值”、“数据名称”和“值”的值?
回答by utkarsh
obj = $("#dropdown").select2("data")
in obj
variable i will get all the data
of the selected node
.
在obj
变量中,我将获得所有data
的selected node
.
回答by pymarco
This was answered in another SO question
There is no direct method with select2, you can use a combinaison of select2 data and jQuery :
$("#example").select2().find(":selected").data("id");
First you get the select2 data then you find your selected option with jQuery and finally the data-attribute.
select2 没有直接的方法,您可以使用 select2 数据和 jQuery 的组合:
$("#example").select2().find(":selected").data("id");
首先你得到 select2 数据,然后你用 jQuery 找到你选择的选项,最后是数据属性。
回答by Shamsudheen
We can use a combination of select2 data and jQuery :
我们可以使用 select2 数据和 jQuery 的组合:
$("#example").select2('data').element[0].attributes['data-name'].value
回答by Kunal
Following worked for me. Idea is to use "change" function as follows
以下为我工作。想法是使用“更改”功能如下
<select class="drop-down">
<option value="0">A</option>
<option value="1">B</option>
</select>
$('.drop-down').select2().on("change", function(e) {
var obj = $(".drop-down").select2("data");
console.log("change val=" + obj[0].id); // 0 or 1 on change
});
回答by patriciabravos
You can access to attributes looking in DOM structure:
您可以访问在 DOM 结构中查找的属性:
<select id="select_name">
<option value="20440" data-value="21.00">21%</option>
<option value="20441" data-value="6.00">6%</option>
<option value="20442" data-value="0.00">0%</option>
</select>
$('#select_name option').each(function (index) {
console.log($(this).attr("data-value"));
});
回答by mohammad.sn
set an id for your select element and this would work
为您的选择元素设置一个 id,这将起作用
$('select#your-id').find('option[value="'+$('#your-id').val()+'"]').attr('data-attribute');
回答by Vishal Kumar
el = document.getElementsByName("invoice_line[0][vat]")
el.options[[el.selectedIndex]].attributes["data-id"].value
回答by Selvamani
I hope you solved the issue. Here we dont use select2()
, if we use select2()
it will not work all other functions like formatNoMatches, on-change....
我希望你解决了这个问题。这里我们不使用select2()
,如果我们使用select2()
它,将无法使用所有其他功能,例如formatNoMatches, on-change....
$("#example").find(":selected").data("id");
回答by brianrhea
The params.data.element
object of the selected item holds the data you're looking for.
params.data.element
所选项目的对象包含您要查找的数据。
Where .foo
is the select element I'm calling, and the data attribute within the options I want to access is data-bar="some value"
The following works for me:
.foo
我正在调用的 select 元素在哪里,我想要访问的选项中的 data 属性是data-bar="some value"
以下对我有用的:
var $fooSelect = $('.foo');
$fooSelect.on(function (e) {
console.log($(e.params.data.element).data('bar'));
});
回答by Jamie Hutber
No idea about the pluggin, and without checking if the code works i imagine it would be something like this:
不知道插件,如果不检查代码是否有效,我想它会是这样的:
$('.vat li').each(function(){
var me = $(this),
mevalue = me.attr('value'),
datavalue = me.data('value'),
dataname = me.data('name');
//do what you want with the data?
});