What does the selector [class^="span"] do?

PhilD picture PhilD · Sep 9, 2011 · Viewed 56.7k times · Source

I can't work out what this is:

Line 33 of http://twitter.github.com/bootstrap/assets/css/bootstrap-1.2.0.min.css

.row [class^="span"] {
  display: inline;
  float: left;
  margin-left: 20px;
}

I understand the style but I've never seen this before

[class^="span"]

Answer

SamGoody picture SamGoody · Nov 25, 2011

This means a class beginning with the word "span", such as:

<div class="spanning"></div>

The ^ symbol is taken from regular expressions, wherein this symbol refers to the beginning of a string.

It should be noted that this checks for the beginning of the class attribute, not the beginning of the classname. Which means it will not match said selector:

<div class="globe spanning"></div>

The above element has two classes, the second of which begins with "span" - but since the attribute class begins with "globe", not with "span", it will not match.

One could use [class*=span], which would return all classes containing span, but that would also return other classes, such as wingspan.

AFAIK, the way to get classes that begin with a string are to use a double selector:

.row [class^="span"], .row [class*=" span"]{}

This will return the class beginning with span, whether at the beginning of the attribute, or in the middle.

(I also recall working in a solution in the homegrown selector engines used by DOMParser).