我需要遍历页面中的一些元素,然后,对于每个元素,如果它有一个以“C”开头的类,则执行某些操作。
$('#dialog li').each(function(){
if ($(this).hasClass("^C")){
//do something
}
}
听起来可能很傻,但是我应该在 if 子句上使用什么选择器/方法?
最佳答案
小心用 $('#dialog li[class^="C"]')
!它只会匹配类属性以“C”开头的元素,而不匹配类以 C 开头的元素。例如,它不会匹配 <li class="foo Clown">
.
AFAIK 你想要的东西是不可能单独使用 jQuery 的。您需要遍历类并分别检查每个类。就像是:
$('#dialog li').filter(function(){
var classes = this.className.split(/\s/);
for (var i = 0, len = classes.length; i < len; i++)
if (/^C/.test(classes[i])) return true;
return false;
}).each( ... )
或者,您应该考虑改变您的方法,并为所有元素提供一个额外的类并以此进行过滤。这有一个好处,它也可以在 CSS 中使用:
<li class="Clown Clown-Funny">
<li class="Clown Clown-Sad">
<li class="Clown Clown-Rodeo">
关于jquery-selectors - jQuery 检查元素是否具有以某个字符串开头的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2668275/