我正在尝试filter()
来自<select>
的jQuery列表,如果文本匹配则返回data
属性。匹配工作,但我没有得到数据属性中包含的字符串:我得到整个对象
$("#company_select option").filter(function(){
var d = $(this).data("company_system_name");
if ($(this).text() === val ) { return d; };
})
为什么会这样。如何获取返回的数据属性?
答案 0 :(得分:2)
看起来你想要:
var optData = $("#company_select option").filter(function(){
return $(this).text() === val;
}).data("company_system_name");
答案 1 :(得分:1)
$.fn.filter
方法返回已过滤的jQuery集合。根据您的需要,您可以将第一个筛选的元素数据或所有数据属性作为数组获取:
var $options = $("#company_select option").filter(function() {
return $(this).text() === val;
});
// Get the data of the first filtered option
var firstData = $options.data('company_system_name');
// Get an array of all data attributes
var allData = $options.map(function() {
return $(this).data("company_system_name");
}).get();
答案 2 :(得分:0)
过滤器用于根据您选择的条件减少一组匹配的元素。要从中实际获取数据,您需要执行以下操作:
var d = $("#company_select option").filter(function(){
return $(this).text() == val;
}).data('company_system_name');
答案 3 :(得分:0)
尝试
var val = "a"
, _data = $.map($("#company_select option"), function(el, i) {
return $(el).text() === val
? $(el).data("company_system_name")
: null
});
console.log(_data)
var val = "a"
, _data = $.map($("#company_select option"), function(el, i) {
return $(el).text() === val
? $(el).data("company_system_name")
: null
})
console.log(_data)
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<select id="company_select">
<option data-company_system_name="a">a</option>
<option data-company_system_name="b">b</option>
<option data-company_system_name="b">b</option>
</select>
&#13;