在li项列表中按类名获取元素文本/值

时间:2017-08-03 19:45:50

标签: javascript jquery

我有一个li项列表,只需要获取包含类名ms-selected的项目。从我迭代的列表中,每个li显示为此li#49-selection.ms-elem-selection.ms-selected。该数字始终不变,我只查找li的{​​{1}}值。我怎么能做到这一点?到目前为止,我已经尝试了这个和不同的版本:

.ms-selected

4 个答案:

答案 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());

    });