2010-11-30 81 views
0

在函数循环中,我需要进一步遍历DOM。

$('.panel_wrapper .panel').each(function(index) { 
    // how can I append to this. For instance another class = "foo" 
    $(this) .foo /* does not work */ 

这与我想要的功能

$(this) = $('.panel_wrapper .panel'); 
$(this) .foo 

下面是一个更好的例子做:

$('.panel-wrapper .panel').each(function(index) { 
    $('.panel-wrapper .panel:eq(' + index + ') .collection_alt_thumbs img:eq(0)').css({"border-color" : "#9B9B9B", "opacity" : 1});   
}); 

在函数还有额外的操作是将在第一次操作之后但在一个条件语句之后执行,而不是必需的。可以在以下进行:

$('.panel-wrapper .panel').each(function(index) { 
    $(this) ('.collection_alt_thumbs img:eq(0)').css({"border-color" : "#9B9B9B", "opacity" : 1}); 
    // conditional statement 
    $(this) /* some other element */ 

}); 
+1

追加什么?你想添加一个名为“foo”的CSS类到与你的第一个选择器相匹配的所有对象吗?试着在你的问题中更精确。 – 2010-11-30 07:45:56

回答

1

您可以使用.find()功能:

$(this).find('.foo'); 
+0

我没有添加类或ID的,我试图追加另一个路径到目的地。例如,我需要得到第二个李的形象。可能有条件测试需要在第三个图像中改变不透明度。所以一旦我有$(this)其他逻辑需要执行。 – barryg 2010-11-30 07:58:46

1

要追加一个类,你应该上使用

$(this).addclass("foo") 

它实际上取决于你想要什么要做 如果你想直接访问DOM元素本身,你不应该把它包起来

this.foo =... 

将增加foo的DOM元素本身(。每个函数内)

0

你要追加到选择(即进一步限制选择的项目)或追加到选择的项目? @达林的解决方案将做前者;如果您要选择多个项目,穿越了他们以及可以执行下列操作之一:

$('.panel_wrapper .panel').add('.foo').each(function(index) { 

$('.panel_wrapper .panel, .foo').each(function(index) { 
+0

我刚更新了这个问题。 – barryg 2010-11-30 16:19:12