jquery如何选择所有以“text-”开头的类元素?

IT技术 javascript jquery
2021-03-05 22:57:54

我有一些课

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

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

6个回答

试试这个。欲了解更多详情,请参阅jquery selectors

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

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

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

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

+1 正确答案。此外,它比我使用 jQuery 获取类名的解决方案更快。干得好。
2021-04-30 22:57:54

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

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

请注意在您正在寻找的东西-之后添加text

查看jQuery 以选择器开头以获取更多信息。

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

$('[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 + '"]');
}

这是一个处理多个类问题的函数,例如<div class="foo bar barfood">

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'这个问题似乎是在询问任何元素。很容易让函数将选择器作为另一个参数,并使用它代替示例中的硬编码。