这是因为代码中的
我有一个html:的示例块
<div class="container">
<div class="item first">...</div>
<div class="item second">...</div>
<div class="item third">...</div>
<div class="item fourth">...</div>
</div>
我想运行这个块,获得每个项目的当前类以及下一个项目的类,这是我正在尝试的,但this.nextSibling.className
总是undefined
:
$(".container > .item").each(function(){
var context = $(this);
context.text("this is " + this.className + ' next one is ' + this.nextSibling.className);
});
我该怎么做?
这是一个小提琴
下一个同级是div之间的空白填充文本节点,而不是下一个div。
请改用nextElementSibling
或jQuery的next
。
nextSibling
是不具有className
属性的textNode
。您应该使用nextElementSibling
或jQuery next
方法。
this.nextElementSibling.className;
context.next().prop('className');
您可以使用点击的元素上下文和jquery .next()
来针对每次迭代中的下一个元素:
$(".container > .item").each(function(){
var context = $(this);
context.text("this is " + $(this).attr('class') + ' next one is ' + $(this).next().attr('class'));
});
工作演示
您可以使用next()函数:这是小提琴
$(".container > .item").each(function(){
var context = $(this);
context.text("this is " + this.className + ' next one is ' + context.next().attr('class'));
});
这是您的代码
$(".container > .item").each(function(){
var context = $(this);
var nextClassName = $(this).next().attr('class');
context.text("this is '" + this.className + "' next one is '" + nextClassName +"'");
});
更新的JS Fiddlehttp://jsfiddle.net/1y6do3bk/4/
试试这个:
$(".container > .item").each(function(){
var context = $(this);
context.text("this is '" + this.className + "' next one is '" + context.next().attr('class') +"'");
});
最后一个仍然是"未定义的",但这是意料之中的。。。