Er sagt ja nicht, dass er *jedes* Element semantisch erkennt. Wenn das aber möglich ist, brauchst du keine Klasse oder ID. Schlussendlich wird es eine Mischung sein, Für eine Gruppe von Elementen mit dem gleichen Zweck benutze eine Klasse, für dokumentweit eindeutige Elemente, sofern nötig, eine ID, ansonsten erkenne das Element an feststehenden Merkmalen. Das könnten beispielsweise (auch Teile von) URLs bei Links oder Sourcenangaben bei Bildern sein, was technisch gesehen Klassen oder IDs nahekommt.
Um nochmal auf das Beispiel mit dem Tooltip zurückzukommen:
anstatt class="tooltip" reinzuschreiben, würde ich eben ein *[title] verwenden um allen Elementen mit einem title-Attribut einen schönen Tooltip zu verpassen.
Wenns nur bestimmte Elemente treffen soll - meinetwegen alle a-Elemente mit einem href-Attribut welche auf ein Ressource verlinken, die mit .pdf endet, damit man im Tooltip ein Vorschaubild der PDF-Datei anzeigen kann.
selektor('a[title][href$=".pdf"]').tooltip('pfdvorschau');
<a title="Irgend ein PDF" href="http://example.com/foo.pfd">blah</a>
<a title="Irgend ein PDF" href="http://example.com/bar.pfd">blah</a>
<a title="Irgend ein PDF" href="http://example.com/baz.pfd">blah</a>
ist schöner als
<a tooltip="Irgend ein PDF" class="tooltip pdfvorschau" href="http://example.com/foo.pfd">blah</a>
<a tooltip="Irgend ein PDF" class="tooltip pdfvorschau" href="http://example.com/bar.pfd">blah</a>
<a tooltip="Irgend ein PDF" class="tooltip pdfvorschau" href="http://example.com/baz.pfd">blah</a>
Bei drei Zeilen ist der Unterschied noch relativ klein - jetzt stellt man sich aber ein Projekt wie die Wikiepdia vor, wo in hundertausenden Artikel jeweils solche Links auftauchen - da geht der Traffic für die unnötigen Attribute schon in sehr ins Geld. Zudem ist der Aufwand, das überall im HTML-Code hinzuzfügen immens.