21

次のようなコードで、クラスカウンターの後の最初のスパン要素を見つけたい:

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

next() 関数はすぐ次の要素のみを見つけるように見えるので、次のようになります。

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

うまくいきません。私が使用してきた方法は少し長いので、もっと短い方法があるかどうか疑問に思っていました。これは次のとおりです。

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

jQuery 3のメソッドでうまくいくと思いますclosest()が、私は 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

$(".カウンター + スパン")

于 2009-03-19T14:54:50.700 に答える