我在<option>
中有很多<select>
个名为zip
的额外属性
<SELECT id="city">
<OPTION zip="AUC 1291 100005" value="1">City 1</OPTION>
<OPTION zip=" 1295 100006" value="2">City 2</OPTION>
<OPTION zip=" 1299 100008" value="3">City 3</OPTION>
</SELECT>
现在我想选择Text或ZIP包含字符串值的选项,但以下代码不起作用。
var val = '1291'; //Zip code
var x = $('#city option:contains('+val+'), #city zip:contains('+val+')').val();
为什么?
答案 0 :(得分:3)
如果要选择具有属性的元素,taht值包含请求的字符串,则必须使用:
var val = '1291'; //Zip code
var x = $('#city option[zip*="' + val + '"]').val();
如上所述:http://api.jquery.com/attribute-contains-selector/
但正如大家所说,更好的方法是使用HTML5 data-zip
属性而不是zip
(只是前缀data-
)。
在这种情况下,您的选择器将是:
var x = $('#city option[data-zip*="' + val + '"]').val();
希望它有所帮助。
答案 1 :(得分:0)
contains
检查内部元素而不是属性,你应该使用类似的东西:
$('#city option').filter(function(){
return this.innerHTML.indexOf(val) > -1 ||
$(this).attr('zip').indexOf(val) > -1;
});
请注意zip
不是有效的HTML属性,而是使用data-zip
代替。
$('#city option').filter(function(){
return this.innerHTML.indexOf(val) > -1 ||
$(this).data('zip').indexOf(val) > -1;
});
答案 2 :(得分:0)
这是我的问题的答案。经过测试和工作:)
var x = $('#city option:contains('+val+'), #city [data-zip*='+val+']').val();