【问题标题】:jQuery filter for ul element class within a div用于 div 中 ul 元素类的 jQuery 过滤器
【发布时间】:2018-11-05 15:08:36
【问题描述】:

我有这样的 html。我正在尝试使用id = 'accordion' 获取div 内每个<ul> 元素的类。有没有一种简单的方法来使用 jQuery 来查询这个?我一直在查看文档,但没有找到可以直接使用的东西。例如,我想做一些类似的事情:

$("#accordion").filter()

<div id="accordion">
    <h3>Section 1</h3>
    <div>
        <ul class="section1">
            <li><a href="www.google.com"> List item one</a></li>
            <li><a href="www.google.com"> List item two</a></li>
            <li><a href="www.google.com"> List item three</a></li>
        </ul>
    </div>
    <h3>Section 2</h3>
    <div>
        <ul class="section2">
            <li><a href="www.google.com"> List item one</a></li>
            <li><a href="www.google.com"> List item two</a></li>
            <li><a href="www.google.com"> List item three</a></li>
        </ul>
    </div>
    <h3>Section 3</h3>
    <div>
        <ul class="section3">
            <li><a href="www.google.com"> List item one</a></li>
            <li><a href="www.google.com"> List item two</a></li>
            <li><a href="www.google.com"> List item three</a></li>
        </ul>
    </div>
</div>

【问题讨论】:

    标签: javascript jquery html filter


    【解决方案1】:

    您可以使用$('#accordion *') 定位div 内的任何元素。然后检查当前元素是否有class属性。

    试试下面的方法:

    $('#accordion *').each(function(){
      if($(this).attr('class'))
        console.log($(this).attr('class') + ' is in ' + $(this)[0].nodeName);
    })
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <div id="accordion">
        <h3>Section 1</h3>
        <div>
            <ul class="section1">
                <li><a href="www.google.com"> List item one</a></li>
                <li><a href="www.google.com"> List item two</a></li>
                <li><a href="www.google.com"> List item three</a></li>
            </ul>
        </div>
        <h3>Section 2</h3>
        <div>
            <ul class="section2">
                <li><a href="www.google.com"> List item one</a></li>
                <li><a href="www.google.com"> List item two</a></li>
                <li><a href="www.google.com"> List item three</a></li>
            </ul>
        </div>
        <h3>Section 3</h3>
        <div>
            <ul class="section3">
                <li><a href="www.google.com"> List item one</a></li>
                <li><a href="www.google.com"> List item two</a></li>
                <li><a href="www.google.com"> List item three</a></li>
            </ul>
        </div>
    </div>

    如果您想将所有类作为一个数组使用filter()map(),如下所示:

    let allClass = $('#accordion *').filter(function(){
      return $(this).attr('class')
    }).get().map(el => el.className);
    
    console.log(allClass);
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <div id="accordion">
        <h3>Section 1</h3>
        <div>
            <ul class="section1">
                <li><a href="www.google.com"> List item one</a></li>
                <li><a href="www.google.com"> List item two</a></li>
                <li><a href="www.google.com"> List item three</a></li>
            </ul>
        </div>
        <h3>Section 2</h3>
        <div>
            <ul class="section2">
                <li><a href="www.google.com"> List item one</a></li>
                <li><a href="www.google.com"> List item two</a></li>
                <li><a href="www.google.com"> List item three</a></li>
            </ul>
        </div>
        <h3>Section 3</h3>
        <div>
            <ul class="section3">
                <li><a href="www.google.com"> List item one</a></li>
                <li><a href="www.google.com"> List item two</a></li>
                <li><a href="www.google.com"> List item three</a></li>
            </ul>
        </div>
    </div>

    【讨论】:

      【解决方案2】:

      试试这个

      var arrayOfClassNames = $("#accordion *").map(function() {
      if($(this).attr('class'))
          return this.className;
      }).get();
      console.log(arrayOfClassNames);
      <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
      <div id="accordion">
          <h3>Section 1</h3>
          <div>
              <ul class="section1">
                  <li><a href="www.google.com"> List item one</a></li>
                  <li><a href="www.google.com"> List item two</a></li>
                  <li><a href="www.google.com"> List item three</a></li>
              </ul>
          </div>
          <h3>Section 2</h3>
          <div>
              <ul class="section2">
                  <li><a href="www.google.com"> List item one</a></li>
                  <li><a href="www.google.com"> List item two</a></li>
                  <li><a href="www.google.com"> List item three</a></li>
              </ul>
          </div>
          <h3>Section 3</h3>
          <div>
              <ul class="section3">
                  <li><a href="www.google.com"> List item one</a></li>
                  <li><a href="www.google.com"> List item two</a></li>
                  <li><a href="www.google.com"> List item three</a></li>
              </ul>
          </div>
      </div>

      【讨论】:

        【解决方案3】:

        您可以使用$('#accordion').find('ul') 来获取所有&lt;ul&gt; 元素。然后你就可以访问这些元素的类了。

        $('#accordion').find('ul').each(function(){
          console.log($(this).attr('class'));
        });
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
        <div id="accordion">
            <h3>Section 1</h3>
            <div>
                <ul class="section1">
                    <li><a href="www.google.com"> List item one</a></li>
                    <li><a href="www.google.com"> List item two</a></li>
                    <li><a href="www.google.com"> List item three</a></li>
                </ul>
            </div>
            <h3>Section 2</h3>
            <div>
                <ul class="section2">
                    <li><a href="www.google.com"> List item one</a></li>
                    <li><a href="www.google.com"> List item two</a></li>
                    <li><a href="www.google.com"> List item three</a></li>
                </ul>
            </div>
            <h3>Section 3</h3>
            <div>
                <ul class="section3">
                    <li><a href="www.google.com"> List item one</a></li>
                    <li><a href="www.google.com"> List item two</a></li>
                    <li><a href="www.google.com"> List item three</a></li>
                </ul>
            </div>
        </div>

        【讨论】:

          【解决方案4】:

          你可以使用.find()这样的函数

          $("#accordion").find("")
          

          【讨论】:

            【解决方案5】:

            您可以使用下面的代码来获取每个 ul 元素的类:

            $('#accordion ul').each(function(){
                  console.log($(this).attr('class'));
            });
            

            【讨论】:

              【解决方案6】:

              你只需要使用 find() 和 jquery 的 each() 方法,如下所示:-

                 $(document).ready(function(){
                  $('#accordion div ul').each(function(){
                      alert($(this).attr('class'));
                  })
                  });
              <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
              <div id="accordion">
                  <h3>Section 1</h3>
                  <div>
                      <ul class="section1">
                          <li><a href="www.google.com"> List item one</a></li>
                          <li><a href="www.google.com"> List item two</a></li>
                          <li><a href="www.google.com"> List item three</a></li>
                      </ul>
                  </div>
                  <h3>Section 2</h3>
                  <div>
                      <ul class="section2">
                          <li><a href="www.google.com"> List item one</a></li>
                          <li><a href="www.google.com"> List item two</a></li>
                          <li><a href="www.google.com"> List item three</a></li>
                      </ul>
                  </div>
                  <h3>Section 3</h3>
                  <div>
                      <ul class="section3">
                          <li><a href="www.google.com"> List item one</a></li>
                          <li><a href="www.google.com"> List item two</a></li>
                          <li><a href="www.google.com"> List item three</a></li>
                      </ul>
                  </div>
              </div>
                  

              【讨论】:

                猜你喜欢
                • 2010-11-14
                • 1970-01-01
                • 2010-10-27
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2016-04-28
                • 2014-05-22
                相关资源
                最近更新 更多