我有一些类
.text-1
.text-2
.text-3
我想要选择它们所有,怎么做呢? 感谢帮助。
我有一些类
.text-1
.text-2
.text-3
我想要选择它们所有,怎么做呢? 感谢帮助。
这里是一种既准确又不太慢的解决方案:
var elts = $('*[class*="text-"]')
.filter(function () {
return this.className.match(/(?:^|\s)text-/);
});
通过使用(希望)快速的Sizzle代码来查找其属性中有“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();
}
$( classStartsWith('text-') ).doSomething();
'div'
。问题似乎在询问任何元素。很容易让函数接受选择器作为另一个参数,并在示例中使用该选择器代替硬编码的选择器。$('#qvDetails,#qvAdd,.qvFramedActive,#qvMoreSizes').live('mouseover',function(){
$(this).addClass('qvHover');
});
这是我项目中的一个例子。你可以像上面那样同时提及div和class。
你可以用逗号分隔的方式同时提供class或div...
class="foo text-1 bar"
上会失败。 - Quentinsometext
这样的内容。 - Phil~=
选择器是“包含单词属性选择器”(http://api.jquery.com/attribute-contains-word-selector/),但它在这里也不起作用。 - Phil