2012-06-20 36 views
0

从里面获得一个李内部的类,并添加到相同的李。从里面获得课堂里的一个李,并添加到相同的李

列表项类似于这样:

<li class="original"> 
<div id="one" class="text">foo</div> 
<div id="two" class="photo">foo</div> 
<div id="three" class="video">foo</div> 
</li> 

<li class="original"> 
<div id="one" class="text">foo2</div> 
<div id="two" class="photo">foo2</div> 
<div id="three" class="video">foo2</div> 
</li> 

... 

我需要抓住从各列表项的申报单的类“三化”的ID,并将其添加到父里的类。所以,代码运行列表后,看起来就像这样:

<li class="original video"> 
<div id="one" class="text">foo</div> 
<div id="two" class="photo">foo</div> 
<div id="three" class="video">foo</div> 
</li> 

<li class="original text"> 
<div id="one" class="video">foo2</div> 
<div id="two" class="photo">foo2</div> 
<div id="three" class="text">foo2</div> 
</li> 

我想是这样的,但它仅更新第一个列表项:

$("#three").each(function(i) { 
    var newclass = $(this).attr("class");     
    $(this).parent().addClass(newclass); 
}); 

预先感谢您的帮助!

+1

你不能有2个元素具有相同的ID,所以正确的这一尝试别的 –

+0

之前你标记ins't正确 – Jorge

+0

是的。你已经破坏了元素和多个id值相同的值。 – chrisvillanueva

回答

1

如果你被卡住了重复ID的

$('[id="three"]').each(function(){ 
    $(this).parent().addClass(this.className); 

}) 
+0

是的,我坚持使用重复ID(至少现在)。而且,是的,我可能是新人,但肯定知道这个基本问题 - 应该注意到。我只是尝试了你的方法,它似乎在伎俩。将测试更多。谢谢! – user1452893

+0

政治上正确的答案是告诉你解决ID的问题......并不总是有遗留网站的真实世界,或者由其他人规划不佳 – charlietfl

+0

感谢您的注意 - 非常感谢。 – user1452893

0

不能有多个具有相同ID的元素。在这种情况下,jquery每个都在做正确的事情,并找到第一个ID然后停止。

<li class="original video"><div class="text one">foo</div></li> 
<li><div class="photo two">foo</div></li> 
<li><div class="video three">foo</div></li> 

<li class="original"><div class="video one">foo2</div></li> 
<li><div class="text two">foo2</div></li> 
<li><div class="photo three">foo2</div></li> 

然后jQuery的:你可以用而不是类解决这个问题

$(".three").each(function(i) { 
var newclass = $(this).attr("class");     
$(this).parent().addClass(newclass); 
}); 
0

这里是另一个解决方案,您可能希望去看看:demo

这里是JS代码(修复了破碎的HTML问题后人们乐评论以上,但保持重复的ID)

$(document).ready(function(){ 

    $('.original').each(function(i) { 
    var div = $(this).find('div').eq(2); 
    var newclass = $(div).attr("class");     
    $(this).addClass(newclass); 
}); 
    });​