我有一个li
项列表,只需要获取包含类名ms-selected
的项目。从我迭代的列表中,每个li
显示为此li#49-selection.ms-elem-selection.ms-selected
。该数字始终不变,我只查找li
的{{1}}值。我怎么能做到这一点?到目前为止,我已经尝试了这个和不同的版本:
.ms-selected
答案 0 :(得分:2)
使用jQuery .hasClass()
函数。
var thelist = $("#ms-fmultiselect .ms-selection .ms-list li");
$.each(thelist, function (i, obj) {
if($(obj).hasClass('ms-selected')){
thearray.push($(obj).val());
}
});
这是一个带有简化选择器的工作示例:
var thelist = $('input');
var thearray = [];
$.each(thelist,function(i,obj){
if($(obj).hasClass('ms-selection')){
thearray.push($(obj).val());
}
});
console.log(thearray);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" value="test1">
<input type="text" class="ms-selection" value="test2">
<input type="text" value="test3">
<input type="text" value="test4">
<input type="text" class="ms-selection" value="test5">
<input type="text" value="test6">
<input type="text" class="ms-selection" value="test7">
<input type="text" value="test8">
答案 1 :(得分:1)
您需要使用.each
:
var thelist = $("#ms-fmultiselect .ms-selection .ms-list li");
thelist.each(function(idx, li) {
var item = $(li);
if(item.hasClass('ms-selected'){
thearray.push({ id: item.val() });
}
});
答案 2 :(得分:0)
如果列表中您想要的唯一项目是“ms-selected”类,那么您应该能够做到
var thelist = $("#ms-fmultiselect .ms-selection .ms-list li.ms-selected");
答案 3 :(得分:0)
迭代所需的选择器会更好,在你的情况下是#34;#ms-fmultiselect .ms-selection .ms-list li.ms-selected&#34;。这将返回所有已选择类ms的已过滤li。这样您就不需要迭代不必要的元素并再次过滤。
您可以使用:
$("#ms-fmultiselect .ms-selection .ms-list li.ms-selected").each(function (){
thearray.push($(this).val());
});