CSS:在for循环中使用nth-child

时间:2015-03-11 10:39:11

标签: javascript jquery css arrays

我正在尝试创建三个数组,并使用从tr的每个子元素收集的特定信息填充它们。

我继续收到语法错误,但是当我用一个数字替换子元素时,下面的代码工作正常(它只是用相同的字符串填充整个数组)。

我已经坚持了一段时间,所以任何语法帮助都会非常感激!我是以正确的方式接近这个吗?



var str = new Array ();

for (i =1; i<=5; i++){

str[i] = $("tr:nth-child(i+2) > td.short-desc > a > div > div.col-lg-5.col-         sm-6.hidden-xs > div.pull-left > div > div:nth-child(2) > img ").attr('src')
 }

var pos = new Array ();

for (i=1; i<=5; i++){
pos[i] = str[i+2].search("traveler/");
}

var rating = new Array ();

for (i=1; i<=5; i++){
rating[i] = str[i+2].substring(pos[i+2]+ 9, pos[i+2] +12);
}

1 个答案:

答案 0 :(得分:2)

jQuery选择器无法访问周围的上下文,因此他们无法看到变量i。您有两种选择:

  1. 计算循环中的值,然后将结果传递给jQuery:$("tr:nth-child(" + (i+2) + ") > ..."

  2. 获取<tr>个元素的列表,迭代它们,然后在每个元素上使用选择器。

  3. 第二种解决方案如下:

    var rows = $('<tr>'); // get all rows as array
    
    for( i=1; i<=5; i++) {
       // search a child of a certain row
       $("td.short-desc > a > div > ...", rows[i+2]);
    }