15

動作していないコードをここに取得しました:

$("#sidebar ul li:last").each(function(){
      $(this).addClass("last");
});

基本的に3つのリストがあり、順序付けされていない各リストの最後に表示される各アイテムにクラス(最後)を追加したいと思います。

<ul>
      <li>Item 1</li>
      <li>Item 2</li>
      <li class="last">Item 3</li>
</ul>

それが理にかなっていることを願っています、乾杯!

4

6 に答える 6

36

間違いやすい。これを試して:

$("#sidebar ul li:last-child").addClass("last");

基本的に :last は、あなたが思っていることをまったく実行しません。各リストの最後ではなく、ドキュメントの最後にのみ一致します。それが :last-child の目的です。

于 2009-02-19T02:46:17.527 に答える
4

jqueryでこれを追加

$("ul li").last().addClass('last');
于 2011-03-21T10:37:58.393 に答える
3

が機能しない理由は、 が:last1 つの要素にしか一致しないためです。jQueryのドキュメントから:

最後に選択された要素に一致します。

したがって、コードが行っていることは、 a 内のすべての<li>要素のセットを取得<ul>し、そのセットから最後の値を取得することです。例:

 <ul>
   <li>1</li>
   <li>2</li>
 </ul>
 <ul>
   <li>3</li>
   <li>4</li>
 </ul>
 <ul>
   <li>5</li>
   <li>6</li>
 </ul>

あなたのコードは element を返します<li>6</li>。(内部的には、収集<li>1</li>してから<li>6</li>最後のものを切り取って返します)。

あなたが探しているのは、ここで他の回答が言ったことです: :last-child.

于 2009-02-19T02:54:14.183 に答える
0

クラスを 3 つの個別のリストに追加する必要がある場合は、それらにクラスを割り当てて「each」を使用できます。

$('#sidebar ul.class li:last-child').each(function(e){
    $(this).addClass("last");
});

これは、期待どおりに機能するはずです。

于 2013-12-05T15:36:07.927 に答える
0

または、リストに ID を指定し、それを jquery-call のコンテキストとして使用することもできます。

<ul id="myList">
  <li>Item</li>
  <li>Item</li>
  <li>Item</li>
  <li>Item</li>
</ul>

<ul id="anotherList">
  <li>Item</li>
  <li>Item</li>
  <li>Item</li>
  <li>Item</li>
</ul>

そして、次のことができます:

jQuery("li:last", "ul#myList").addClass("lastItem");

これで、最初のリストの最後の li はクラス "lastItem" を持つことになります。

編集:申し訳ありませんが、質問を読み違えました。これは無視してください。

于 2009-02-19T15:20:27.537 に答える
-1

あなたが試すことができます

$('#sidebar ul li:last').addClass('last');
于 2009-02-19T02:44:09.607 に答える