【问题标题】:jquery how to select all the class elements start with "text-"?jquery如何选择所有以“text-”开头的类元素?
【发布时间】:2019-07-24 04:54:50
【问题描述】:

我有一些课程

.text-1
.text-2
.text-3

我想全选,怎么做? 感谢您的帮助

【问题讨论】:

    标签: javascript jquery


    【解决方案1】:

    试试这个。更多详情请参考jquery selectors

    $('*[class^="text"]')
    

    【讨论】:

    • class 属性采用空格分隔的类列表;这将在 class="foo text-1 bar" 上失败
    • 然后我们可以使用 $('*[class*="text"]').这将在类属性中搜索文本作为子字符串。参考:api.jquery.com/attribute-contains-selector
    • @Chinmayee 这将错误地匹配 sometext
    • 我想他必须同时使用两者。 $('*[class^="post"],*[class~="post"]')
    • @Chinmayee 对不起,这是一个虚构的例子。我说如果有一个正则表达式属性选择器会很好。 ~= 选择器是“包含单词属性选择器”(api.jquery.com/attribute-contains-word-selector),但在这里也不起作用
    【解决方案2】:

    这是一个既准确又不太慢的解决方案的尝试:

    var elts = $('*[class*="text-"]')
      .filter(function () {
        return this.className.match(/(?:^|\s)text-/);
      });
    

    通过使用(希望)快速的 Sizzle 代码来查找在其 class 属性中的任何位置具有“text-”的元素,然后在每个元素上调用一个函数以将它们过滤到实际具有的元素"text-" 在类名的开头。

    【讨论】:

    • +1 正确答案。此外,它比我使用 jQuery 获取类名的解决方案更快。干得好。
    【解决方案3】:

    您不一定需要指定星号*,您也可以这样做:

    $('[class^="text-"]')
    

    注意-text 之后添加了您要查找的内容。

    查看jQuery starts with selector 了解更多信息。

    【讨论】:

      【解决方案4】:

      你可以在一个函数调用中只使用两个选择器来做到这一点:

      $('[class^="text-"], [class*=" text-"]')

      这将检查类属性是否以text- 开头,或者类字符串的任何部分是否有空格后跟text-。这解决了您在使用

      时可能遇到的任何问题

      $('[class^="text-"], [class*=" text-"]')
          .css('background-color', '#00FF00'); // add background color for demo
      /* just for demo */
      div:after {
        content: "class: " attr(class);
      }
      <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
      
      <div class="text-1 test"></div>
      <div class="text some-text-1"></div>
      <div class="nope text-long-class-name"></div>
      <div class="some-text-1"></div>
      <div class="even get text-n-here"></div>

      您可以将其拉出到一个函数中,该函数选择所有具有与给定前缀匹配的类的元素:

      function selectElementsWithClassPrefix(prefix) {
          return $('[class^="' + prefix + '"], [class*=" ' + prefix + '"]');
      }
      

      【讨论】:

        【解决方案5】:

        这是一个处理多个类问题的函数,例如&lt;div class="foo bar barfood"&gt;

        function classStartsWith(str) {
          return $('div').map( function(i,e) {
            var classes = e.className.split(' ');
            for (var i=0, j=classes.length; i < j; i++) {
              if (classes[i].substr(0, str.length) == str) return e;
            }
          }).get();
        }
        

        该函数返回一个匹配的 DOM 元素数组。你可以这样使用它:

        $( classStartsWith('text-') ).doSomething();
        

        这是一个例子:http://www.jsfiddle.net/Ms6ey/3/

        当然这是假设选择器'div'。这个问题似乎是在询问任何元素。很容易让函数将选择器作为另一个参数,并使用它来代替示例中的硬编码。

        【讨论】:

          【解决方案6】:
          $('#qvDetails,#qvAdd,.qvFramedActive,#qvMoreSizes').live('mouseover',function(){
          
                  $(this).addClass('qvHover');                                                                            
          
              });
          

          我的一个项目中的示例。您可以像上面一样同时提及 div 和类

          您可以在同一个中提供逗号分隔的类或 div...

          【讨论】:

          • 如果你想在没有模式的情况下同时提供多个类或 id,我给出了上面的示例
          • 上面的代码有什么问题,他没有提到他想要一个正确的模式
          猜你喜欢
          • 2016-06-14
          • 1970-01-01
          • 2011-04-07
          • 2011-09-30
          • 2014-11-22
          • 2016-03-25
          • 2013-09-28
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多