我有一些课
.text-1
.text-2
.text-3
我想全选,怎么做?谢谢您的帮助
我有一些课
.text-1
.text-2
.text-3
我想全选,怎么做?谢谢您的帮助
试试这个。欲了解更多详情,请参阅jquery selectors
$('*[class^="text"]')
这是对既准确又不太慢的解决方案的尝试:
var elts = $('*[class*="text-"]')
.filter(function () {
return this.className.match(/(?:^|\s)text-/);
});
它通过使用(希望如此)快速 Sizzle 代码来查找class属性中任何位置具有“text-”的元素,然后在每个元素上调用一个函数以将它们过滤到实际具有“text-”的元素类名的开头。
您可以在一个函数调用中只使用两个选择器来做到这一点:
$('[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'。这个问题似乎是在询问任何元素。很容易让函数将选择器作为另一个参数,并使用它代替示例中的硬编码。