jquery选择特定的孩子

时间:2011-01-10 14:28:25

标签: jquery

以下代码有什么问题。我试图循环使用特定id的子节点,并仅为特定的子节点分配css类。

var firstRC = $("#id_1").children();
    for(j=0;j<firstRC.length;j++) {
       if(j>5) {
        $("#id_1:eq(j)").addClass("cssClass");
       }

    }

3 个答案:

答案 0 :(得分:1)

您的问题是j变量是一个字符串。您需要将其恢复到JavaScript代码中。

var firstRC = $("#id_1").children();
for(j=0;j<firstRC.length;j++) {
   if(j>5) {
    $("#id_1:eq(" + j + ")").addClass("cssClass");
   }
}

当然,如果您尝试为大于5的所有内容设置类,则可以执行此操作:

$("#id_1 :gt(5)").addClass("cssClass");

示例:http://jsfiddle.net/jonathon/8sydw/1/

答案 1 :(得分:1)

因为jQuery选择器中的j只是字符串的一部分而不是变量。您需要通过连接创建选择器字符串:

var firstRC = $("#id_1").children();
  for(j=0;j<firstRC.length;j++) {
    if(j>5) {
      $("#id_1 :eq(" + j + ")").addClass("cssClass");
    }
  }

此外,您需要:eq之前的空格,或者您将选择标识为id_1的第j个元素,而不是具有id_1的元素中的第j个子元素。

然而,你做得很复杂。 jQuery有一个gt选择器,允许您选择所有元素 * g * reater * t *某个特定索引:

$("#id_1 :gt(5)").addClass("cssClass");

如果你确实需要遍历几个元素,你应该查看jQuery的each方法,这比<{1}}循环更容易使用更好。在for循环内,each指的是当前元素。

示例:

this

答案 2 :(得分:1)

使用:gt选择器或.slice()方法获取所需的节点。

$("#id_1").children().slice(5).addClass("cssClass");

参考:.slice()
例如:http://www.jsfiddle.net/xDN9D/