如何计算所有元素,其样式以" string"开头?

时间:2014-05-13 14:07:58

标签: javascript jquery html

所以我使用以下jQuery来获取HTML中包含类的所有项目的计数。然而,它没有正确返回,我觉得我错过了一些愚蠢的东西。

var counter = $("*[class^=box]").length;

JSFiddle例如:jsfiddle 此链接应返回1,但返回0.


修改

这是一个愚蠢的错误:我以前使用的ID只是box1,box2,box3等,所以它才有意义。我知道这很愚蠢。

var counter = $("*[class=box]").length;

2 个答案:

答案 0 :(得分:3)

" 属性以选择器"开头。匹配属性,而不是必须的类名

这意味着这将匹配选择器

<div class="box0 emailbodytext" ...

因为属性以&#34;框&#34;开头,而这不是

<div class="emailbodytext box0" ...

因为属性以&#34;框&#34;开头,即使其中一个类


这是解决问题的一种方法

var counter = $('*').filter(function() {
    return this.className.split(/\s+/).filter(function(klass){
        return klass.indexOf('box') === 0;
    }).length;
}).length;

FIDDLE

答案 1 :(得分:2)

您的选择器基本上会检查其类属性以“box”开头的元素。 您的class属性中有多个类名,因此您需要使用'contains'而不是'starts with'。 例如:

var counter = $("*[class*=box]").length;