2011-09-08 17 views
1

我想遍历元素。每个元素具有项目元素作为子元素。因此,首先我重复,然后我想解决某个item元素,例如,第三。这是我的代码:jQuery:如何解决具有特殊类的子项目

$(".pricetable .righttable .line:not(.blank)").each(function(j) { 
    var currentLine = $(".pricetable .righttable .line:not(.blank)").eq(j); 
    currentLine.(".item").each(function(k) { 
     $(".pricetable .righttable .line .item").eq(i).addClass("active"); 
    }); 
}); 

的问题是,我不知道如何解决与项目类的子元素。

currentLine.(".item").each(function(k) 

这是行不通的。对于非XML值({0:#2 =({}),长度:1,prevObject:{length:3,prevObject:{0:#1 =({}),上下文:#1#,长度:1},上下文:#1#,选择器:“。pricetable .righttable .line:not(.blank)”,0:#2#,1 :({}),2: }),context:#1#,selector:“。pricetable .righttable .line:not(.blank).slice(0,1)”}) file:/// C:/ Users/xxx/lib/pricetable.js 112 线

编辑:
哇,我没想到我得到这样一个良好的和快速的响应!我觉得我跟这个解决方案:

$(".pricetable .righttable .line:not(.blank)").each(function(j) { 
    $(this).children(".item").eq(i).addClass("active"); 
}); 

回答

3
$(".pricetable .righttable .line:not(.blank)").each(function(j) { 
    var currentLine = $(".pricetable .righttable .line:not(.blank)").eq(j); 
    currentLine.find(".item").each(function(k) { 
     $(".pricetable .righttable .line .item").eq(i).addClass("active"); 
    }); 
}); 

http://api.jquery.com/find/

如果他们currentLine的直接孩子,你应该能够做到children('.item')代替find('.item')。这被称为遍历DOM。访问此页面(http://api.jquery.com/category/traversing/)并阅读其中一些功能的描述。如果你遍历了很多:)

2
$('.pricetable .righttable .line:not(.blank)').find('.item').each(function() { 
    // this point to child element - item 
    // use $(this).addClass('active'); 
}); 
2

如果你想要做的事,每个line的第n个item,它比它看起来要容易得多,他们会牢记非常有用:

var index = 3; // the third "item" element 
$(".pricetable .righttable .line:not(.blank) .item:nth-child(" + index + ")") 
    .addClass("active"); 

See it in action

是否还有其他想要做的事情,以上是不够的?

2

略有改善我回答你的问题:

var currentLine = $(".pricetable .righttable .line:not(.blank)").eq(j); 

易于更换有:

var currentLine = $(this); 

第二,如果你想找到的$(this)内第三.item元素,使用.find()

.find(".item:nth-child(3)"); 

不需要遍历行。如果你必须遍历线,那么只需比较k2(因为JavaScript从0开始计数)就是这样。

1
$(".pricetable .righttable .line:not(.blank)").each(function() { 
    $(this).find('.item:nth-child(2)').addClass('active'); 
}); 
相关问题