21

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

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

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

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

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

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

我认为closest()jQuery 3 中的方法可以解决问题,但我使用的是 1.2.6——有没有更好的方法来做到这一点(我只是用next()错了吗?)

4

6 回答 6

17

类似于标记的答案,但使用 :first 选择器看起来更干净一些:

$('.counter').nextAll('span:first')
于 2011-08-24T22:20:21.410 回答
8

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

jQuery.fn.firstAfter = function(filter){
 return this.nextAll(filter).eq(0);
}
于 2009-03-18T20:56:53.850 回答
3

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

$(".counter").siblings("span");
于 2009-01-14T02:35:49.677 回答
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);
于 2009-01-14T02:35:35.420 回答
0

尝试这样的事情:

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

希望有帮助!

于 2009-01-14T02:48:01.073 回答
0

$(".counter + span")

于 2009-03-19T14:54:50.700 回答