找到不是立即的下一个元素?

时间:2009-01-14 02:14:32

标签: jquery traversal

我想在类计数器之后找到第一个span元素,代码如下:

<div class="counter"></div>
<p></p>
<span></span>

看起来next()函数只找到下一个元素,所以像这样:

$(".counter").next("span")

不行。我一直在使用的方式有点冗长,我想知道是否有更短的方式,就是这样:

$(".counter").nextAll("span").eq(0)

我认为jQuery 3中的closest()方法可以解决问题,但我使用的是1.2.6 - 是否有更好的方法(我只是使用next()错误?)

6 个答案:

答案 0 :(得分:17)

与标记的答案类似,但使用:first selector:

看起来更干净
$('.counter').nextAll('span:first')

答案 1 :(得分:8)

我认为你的方法是最好的方法。如果你觉得它看起来不太好就把它变成一个插件:

jQuery.fn.firstAfter = function(filter){
 return this.nextAll(filter).eq(0);
}

答案 2 :(得分:3)

我认为siblings()功能正是您所寻找的。尝试这样的事情:

$(".counter").siblings("span");

答案 3 :(得分:1)

我不确定最接近的方法是否可行,但如果是这样的话...也许你可以从1.3中提取最接近的方法并将其变成插件?

我没有机会尝试这个,但试一试。它不会伤害:

(function($) {
  $.fn.closest = function (selector) {
    return this.map(function(){
      var cur = this;
      while ( cur && cur.ownerDocument ) {
        if ( $(cur).is(selector) )
          return cur;
        cur = cur.parentNode;
      }
    });
  }
})(jQuery);

答案 4 :(得分:0)

尝试这样的事情:

$(".counter ~ span:first");

希望有所帮助!

答案 5 :(得分:0)

$(“。counter + span”)