在指定的类之前计数

时间:2011-06-27 19:29:10

标签: javascript jquery jquery-selectors count

我正试图找到一种计算某个类名头部元素的方法。我有以下内容:

$('.active').each(function(index,item){
  var nextDiv = $(item).next();
  var followingDiv = $(nextDiv).next('a');
  $(item).wrap("<div id='window" + index + "'></div>");
  $("#window"+index).append(nextDiv).append(followingDiv);
});

这样可以正常工作,它只抓取活动项前面'a'个标记的两个元素,在这种情况下为'.active'并将它们包装在div'window' }}。

我想知道怎么做的是在活动类的头部添加两个以上的元素并将其存储在变量中,而不是使10个变量保持说.next('a').next('a') etc...然后必须附加所有这些新创建的变量如:

$("#window"+index).append(nextDiv).append(followingDiv).append(another-a).append(another-a-again) ...

我认为应该有一种更简单的方法可以将指定数量的元素计算为某个类名的头部,而无需重新创建大量变量。

2 个答案:

答案 0 :(得分:1)

我想你想要.nextAll() [docs]

  

获取匹配元素集中每个元素的所有后续兄弟,可选择由选择器过滤。

var as = $(this).nextAll('a');

更新:忘记了最高限额。您可以使用.slice() [docs]

var as = $(this).nextAll('a').slice(0,10);

您的整个代码将是:

$('.active').each(function(index,item){
  $(this).nextAll('a').slice(0,10)
      .add(this)
      .wrap("<div id='window" + index + "'></div>");
});

如果您想将所有.active元素与其以下链接分组,也许nextUntil [docs]也很有意思。

答案 1 :(得分:0)

请查看prevAll(或nextAll,具体取决于“向前”的方向。)

您可以执行以下操作:

$('.active').each(function(index, item) {
  $(this).prevAll().each(function(prevIndex, prevItem) {
    if (prevIndex < 10) {
      // ... do something with prevItem
    }
  });
});

您可能必须(例如)撤销订单,以便在.active

之前立即获取元素