Dann ist ein Attribut wohl falsch; Attributwerte werden nicht dargestellt (von Ausnahmen wie img/@alt und input/@value mal abgesehen).
Oder man hilft nach:
img:after {
content: "Quelle: "attr(longdesc);
display: block;
}
Wahlweise auch mit :outside.
Leider kann man auch in CSS 3 afaik keine verfolgbaren Links damit darstellen.
Eine Möglichkeit ist aber, das Ganze per JavaScript zu bauen (der von dir vorgeschlagene Code) und als Fallback die CSS-Variante zu verwenden.