6 个答案:

答案 0 :(得分:16)

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

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( ... )

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

答案 1 :(得分:5)

$('#dialog li[class^="C"]').each(function() {

// do something

});

答案 2 :(得分:1)

我认为没有内置的选择器来测试以字符串开头的类。

有一个选择器可以测试属性是否以字符串开头,所以如果你知道你的元素只有一个类(或者总是以相关的类开头),你可以这样做:

$(this).is("class^='C'")

但是,如果您无法保证上述任何一种情况,则必须手动拆分并测试元素上定义的每个类,如here所述。

答案 3 :(得分:1)

您可以尝试该选择器。如果有两个或更多这样的课程,这将是有效的&#34; Clown foo doo&#34;和

你可以尝试这样的事情$('#dialog li[class*="C"]'),在这种情况下会选择包含&#34; C&#34;信,例如&#34; exCelence foo&#34;。

如果您有兴趣计算有多少课程以&#34; C&#34;无论他们的位置如何(无论他们是在开头,在中间还是在中间),你都可以尝试这样的事情:

$('#dialog li[class^="C"]').each(function() {

var classes = div.attr("class").split(" ");

var count = 0;

$.each(classes, function(i, v){ if(v.indexOf('C')!=-1) count++; });

if (count == 1) alert("It has one 'C' class");

if (count>1) alert("It more than one 'C' class");

}

答案 4 :(得分:0)

尝试$('#dialog li[class^="C"]')之类的内容

答案 5 :(得分:0)

对于比“以...开头”更详细的过滤器,您可以使用filter()功能:

$('#dialog li').filter( function() {

// return true for every element that matches your condition

return this.className.match(/^c/) != null;

}).each(function(){

//do something

}

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐