2017-08-01 6 views
1

私は次の構造を持っています:ul> li> ul>(xの数li)。私の質問は、ul> li> ul>(3つ以下のli)だけで要素を選択する方法です。なぜなら、私はこの要素だけでいくつかの行動を行う必要があるからです。私は、私はjQueryのでノーブだと、しかし...あなたが知っているがあります。 '(子供の数がxであるulを選択してください

$(document).ready(function(){ 

var hideElement = $(".show-more-option") 
    if($('.content').length<=3){    
     $hideElement.switchClass(".show-more", "hide-more");   
    } 
}); 

答えて

0

あなたはかなり簡単に使用してこれを行うことができますjQueryの.filter()

$(function() { 
 
    let threeOrFewer = $("ul").filter(function() { 
 
    return $(this).find("li").length <= 3; 
 
    }); 
 
    threeOrFewer.addClass("switchClass"); 
 
});
.switchClass { 
 
    font-weight: bold; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 
<ul> 
 
    <li>One</li> 
 
    <li>Two</li> 
 
</ul> 
 
<ul> 
 
    <li>One</li> 
 
    <li>Two</li> 
 
    <li>Three</li> 
 
</ul> 
 
<ul> 
 
    <li>One</li> 
 
    <li>Two</li> 
 
    <li>Three</li> 
 
    <li>Four</li> 
 
</ul>

0

あなたはこのような何かを行うことができ

countListItems呼び出された関数は、関数の引数として、ULを取り、その数が3以下であるかどうか調べます。そうであれば、ulにクラス「threeOrLess」を追加します。

クラスはすべて、あなたの基準に合ったulへの緑の背景色。これにより、与えられたul内のliの数を区別することができます。あなたの条件を満たすだけで、それらのulのスタイルを設定したり、必要に応じて動作させることができます。

サンプルマークアップには2ulがあり、両方に対して関数countListItemsが実行されていることに注意してください。最初のulは 'foo'のクラスで、3人の児童がいるので、一致していて、このulを対象にしたいと思います。しかし、2番目のクラス( 'bar'のクラスのul)には3つ以上の児童が含まれているため、そのulには何もしません。

https://jsbin.com/neradafice/edit?html,js,output

<!DOCTYPE html> 
<html> 
    <head> 
     <style> 
      ul.threeOrLess { 
       background-color: green; 
      } 
     </style> 
    </head> 
    <body> 
     <ul> 
      <li> 
       1 
       <ul class="foo"> 
        <li>a</li> 
        <li>b</li> 
        <li>c</li> 
       </ul> 
      </li> 
      <li>2</li> 
      <li>3</li> 
     </ul> 
     <ul> 
      <li> 
       1 
       <ul class="bar"> 
        <li>a</li> 
        <li>b</li> 
        <li>c</li> 
        <li>d</li> 
       </ul> 
      </li> 
      <li>2</li> 
      <li>3</li> 
      <li>4</li> 
     </ul> 


     <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> 
     <script type="text/javascript"> 
      $(function(){ 
       countListItems($('.foo')); 
       countListItems($('.bar')); 
      }); 

      function countListItems(ul) { 
       if (ul.children('li').length <= 3) { 
        ul.addClass('threeOrLess') 
       } 
      } 
     </script> 
    </body> 
</html> 
関連する問題