jQuery检查元素是否有一个以某个字符串开头的类

ktM*_*Men 13 jquery-selectors

我需要循环遍历页面中的一些元素,然后,对于每一个元素,如果它有一个以"C"开头的类,则执行某些操作.

$('#dialog li').each(function(){
    if ($(this).hasClass("^C")){
         //do something
    }
}
Run Code Online (Sandbox Code Playgroud)

这可能听起来很愚蠢,但我应该在if子句上使用什么样的选择器/方法?

RoT*_*oRa 16

小心$('#dialog li[class^="C"]')!它只匹配元素,其class属性以"C"开头,而不是以C开头的类.例如它不匹配<li class="foo Clown">.

AFAIK你想要的不仅仅是mit 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( ... )
Run Code Online (Sandbox Code Playgroud)

另外,您应该考虑更改您的方法,并为所有元素添加一个额外的类并按此过滤.这有一个附加功能,它也可以在CSS中使用:

<li class="Clown Clown-Funny">
<li class="Clown Clown-Sad">
<li class="Clown Clown-Rodeo">
Run Code Online (Sandbox Code Playgroud)

  • 在jQuery中可能是这样的:$("div [class ^ ='Clown - '],div [class*='Clown-']") (2认同)

jus*_*tkt 5

尝试使用选择器启动属性.作为奖励,没有必要额外的if.

$('#dialog li[class^="C"]').each(function() {
    // do something
});
Run Code Online (Sandbox Code Playgroud)