-3

次のようなさまざまなタイプの要素を含む一連のセクションがあります。

<section>
    <div>Something</div>
    <a href="#">Some Copy</a>
    <div>Something</div>
    <a href="#">Some Copy</a>
</section>

<section>
    <a href="#">Some Copy</a>
    <div>Something</div>
    <a href="#">Some Copy</a> <a href="#">Some Copy</a>
    <div>Something</div>
</section>

div かアンカーかに関係なく、各セクションをループして最後の要素を見つける必要があります。

$("section").each(function(){
      var last = //find the last element
      last.addClass('last');
}); 

変数の定義に助けが必要ですlast。通常、css'last-childまたはlast-of-typeを使用して各セクションの最後の要素を識別しますが、さまざまな種類の要素 (アンカーと div) があるため、javascript を使用する必要があると思います。この最後の要素を見つける方法はありますか?

4

4 に答える 4

5

試す

$("section").each(function(){
      var last = $(this).children(':last');
      last.addClass('last');
}); 

http://jsfiddle.net/mowglisanu/23EcJ/

于 2013-08-05T21:01:37.257 に答える
1

編集: Musa's answerで示されているように、ええと、jQueryにはそのためのセレクターがあります。jQueryを使用していない人(または「コマンドー」を好む人)が必要になる場合に備えて、これをここに残しておきます。


最新のブラウザーでは、次を使用できますlastElementChild

$("section").each(function(){
    var last = this.lastElementChild
    // Use `last` (possibly wrapped in a jQuery instance)
});

(それを jQuery インスタンスにラップすることもできます。)

古いブラウザでは、(テキスト ノードやコメント ノードなどとは対照的に) を使用して、最後の要素にlastChild戻ることができます。previousSibling

$("section").each(function(){
      var last = this.lastChild;
      while (last && last.nodeType !== 1) {
          last = last.previousSibling;
      }
      // Use `last` (possibly wrapped in a jQuery instance)
});
于 2013-08-05T21:01:35.733 に答える
0

@Musa とほぼ同じアプローチを取りました。ここで見ることができます:

http://jsfiddle.net/nRtsF/

$("section").each(function(){ 
      $(this).children(':last').addClass('last');
}); 
于 2013-08-05T21:02:27.653 に答える
0

:lastjQuery セレクターを使用します。

$('section').find(':last').each(function() {
    // Code here
});
于 2013-08-05T21:02:34.097 に答える