从元素中获取下一个className

时间:2015-02-11 09:27:23

标签: javascript jquery

我有一个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);
});

我该怎么做?

Here's a fiddle

6 个答案:

答案 0 :(得分:2)

下一个兄弟是白色空间填充的文本节点 div之间,而不是下一个div。

改为使用nextElementSibling或jQuery的next

答案 1 :(得分:1)

您可以使用点击的元素上下文和jquery .next()来定位每次迭代中的下一个元素:

$(".container > .item").each(function(){
  var context = $(this);
  context.text("this is " + $(this).attr('class') + ' next one is ' + $(this).next().attr('class'));
});

Working Demo

答案 2 :(得分:1)

这是因为代码中的nextSiblingtextNode,但没有className属性。您应该使用nextElementSibling或jQuery next方法。

this.nextElementSibling.className;
context.next().prop('className');

答案 3 :(得分:0)

您可以使用next()函数: 这是fiddle

$(".container > .item").each(function(){
        var context = $(this);
        context.text("this is " + this.className + ' next one is ' + context.next().attr('class'));
    });

答案 4 :(得分:0)

这是您的代码

$(".container > .item").each(function(){
            var context = $(this);
            var nextClassName = $(this).next().attr('class');
            context.text("this is '" + this.className + "' next one is '" + nextClassName +"'");
        });

更新了JS小提琴http://jsfiddle.net/1y6do3bk/4/

答案 5 :(得分:0)

试试这个:

$(".container > .item").each(function(){
        var context = $(this);
        context.text("this is '" + this.className + "' next one is '" + context.next().attr('class') +"'");
    });

最后一个仍然是'未定义',但这是预期的......