0

从 li 中的 div 获取类并添加到同一个 li。

列表项与此类似:

<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>

...

我需要从每个列表项的 div 中获取 id 为“三”的类,并将其添加到父 li 的类中。因此,代码运行后,列表将如下所示:

<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);
});

在此先感谢您的帮助!

4

3 回答 3

1

如果您被重复的 ID 卡住了

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

})
于 2012-06-20T20:54:29.713 回答
0

不能有多个具有相同 ID 的元素。在这种情况下,jquery each 都在做正确的事情并找到第一个 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);
});
于 2012-06-20T20:47:43.143 回答
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);
});
    });​
于 2012-06-20T20:57:38.460 回答