当我这样做的时候
$('ul.latestnews ul li').parent().prev().text());
我找回了目标李的内容。 (本例中为word1或word2)。
但是当我做的时候
$('ul.latestnews ul li').addClass($(this).parent().prev().text());
它不会添加课程。当我在最后一个语句上执行console.log时,它只返回我尝试将类添加到的所有li。
我想做的是:
<ul class="latestnews">
<li>word1</li>
<ul>
<li>my class should become word1</li>
<li>my class should become word1</li>
</ul>
<li>word2</li>
<ul>
<li>my class must become word2</li>
</ul>
</ul>
我哪里出错了?
答案 0 :(得分:2)
this
是仅在jQuery函数内部的DOM元素,如each
:
$('ul.latestnews ul li').each(function(){
$(this).addClass($(this).parent().prev().text());
});
Live DEMO
代码中的this
可能是Window
对象...
请注意,如果稍微更改DOM结构,那些使用prev
,parent
的DOM遍历可能会非常容易中断,您可能希望使用基于元素类的其他选择器。
答案 1 :(得分:1)
我认为html代码不太正确,因为它应该像:
<ul class="latestnews">
<li>word1</li>
<li>
<ul>
<li>my class should become word1</li>
<li>my class should become word1</li>
</ul>
</li>
<li>word2</li>
<li>
<ul>
<li>my class must become word2</li>
</ul>
</li>
</ul>
然后:
$("ul.latestnews ul > li").each(function(){
var $this=$(this);
var className = $this.parents("li").first().prev().text();
$this.addClass(className);
});