根据数组中的值检查每个div的id

时间:2013-07-03 10:20:58

标签: javascript jquery

我正在使用以下JS创建一组基于现有类别的选项卡。 我需要根据JS数组中的值将其扩展到DIV id中的特定id。

        $("#categories div[id^=category]:not(:first)", this).hide();

        var cats = $('#categories div[id^=category]');

        cats.each(function () {
           var anch = $(this).find('h3 a').eq(1).clone();
            anch[0].rel = this.id;
            $('<li/>').append(anch).appendTo('#tabs');
        });

html:

<div id="category_1">
    <h3 class="maintitle">
        <a class="toggle">..</a>
        <a href="#">Cat 1 Title</a>
    </h3>
    <div>
        ...
    </div>
</div>

<div id="category_2">
    <h3 class="maintitle">
        <a class="toggle">..</a>
        <a href="#">Cat 2 Title</a>
    </h3>
    <div>
        ...
    </div>
</div>

通过添加:

,我已准备好JS数组
var catsList = '{$cats}'; // comma separated list of numbers generated in PHP - returns 1,4,8 currently.
var catsArray = catsList.split(',');

我如何转换下面的内容,以检查catsArray中的每个项目?

var cats = $('#categories div[id^=category]');

这样的东西
var cats = $('#categories div[id^=category_'+catsArray+']');

但显然要检查数组中的每个项目,而不是正在检查整个数组。

2 个答案:

答案 0 :(得分:2)

你可能想要each功能

$.each(catsArray,function(index, item) {
       var cats = $('#categories div[id^=category_'+item+']');
 });

根据您的使用方式,for loop也会这样做:

for (var i = 0; i < catsArray.length; i++) {
   var catIndex = catsArray[i];
   var cats = $('#categories div[id^=category_'+catIndex +']');
}

答案 1 :(得分:2)

您可以使用它,因为ID必须在上下文页面上是唯一的:

var cats = $('#category_'+catsArray.join(',#category_'));

DEMO