检查字符串是否包含ID,然后将addClass包含在所有匹配项中

时间:2014-08-14 11:52:18

标签: javascript jquery

我需要检查是否有任何<li>的ID与1001,1002,1003,循环中arrayList输出的字符串for()中给出的任何ID相匹配

var wishArray = $.parseJSON($.cookie('wishlist_cookie'));

var arrayList = '';
var li = $('ul li');
var str = li.attr('id');

for (i = 0; i < wishArray['itemlist'].length; i++) { 
    arrayList += wishArray['itemlist'][i].wishlist_item_id + ",";
    console.log(arrayList);
}

然后将addClass添加到所有<li>,其中ID等于1001,1002,1003,中的任何一个

if (arrayList.indexOf(str) != -1) {
    if($('ul li').attr('id', idvalue)){
        $(this).addClass('found');
    }
}

如何检查所有<li> ID,然后将.addClass('found')应用于与<li>输出的ID匹配的所有arrayList

3 个答案:

答案 0 :(得分:1)

变量li已经包含id并在变量str中再次使用,您可以删除它:

var li = $('ul li')//.attr('id');
var str = li.attr('id');

答案 1 :(得分:1)

为什么不是这样的呢?

这里我们构造一个jQuery CSS选择器,它将每个li与列出的id之一匹配 然后让jQuery完成剩下的工作。

var lisSelector = wishArray['itemlist'].map(function (item) {
    return 'li[id="' + item.wishlist_item_id + '"]';
}).join(',');

$(lisSelector).addClass('found');

请注意,如果您不关心元素是否为<li>,则可以使用'#' + item.wishlist_item_id生成一个选择器。

答案 2 :(得分:0)

您真正需要做的就是从数组中创建一个选择器。

$('#' + wishArray['itemlist'].join(', #') ).addClass('found');

// would create 
//$('#0001, #0002, #003').addClass('found');