Also hat jedes Bild eine Anzahl von Tags (z. B. "Apfel", "rot", "groß") und wenn Sie über den großen roten Apfel fahren, möchten Sie, dass alle anderen Äpfel, großen Dinge und roten Dinge aufleuchten?
Wie kgiannakakis vorgeschlagen hat, würde ich diese Daten in das Klassenattribut des Bildes einfügen - der einzige Unterschied besteht darin, dass ich jeder Klasse etwas voranstellen würde, damit es nicht mit anderen Klassen auf Ihrer Seite kollidiert.
Ich habe auch eine zusätzliche Klasse namens "tagged" hinzugefügt, damit Sie Ihre markierten Fotos von Navigationsbildern oder ähnlichem unterscheiden können.
$('img.tagged')
.each(function() {
var thisClasses = this.className.split(/s+/); // Array von Klassen.
var search = [];
for (var i = 0; i < thisClasses.length; ++i) {
if (thisClasses[i].substr(0, 4) == "tag-") {
search.push("." + thisClasses[i]);
}
}
$(this).data("tags", search.join(",")); // ".tag-big,.tag-red,.tag-apple"
})
.hover(function() {
$('img.tagged')
.filter(this.data('tags'))
.addClass("highlight")
;
}, function() {
$('img.tagged')
.filter(this.data('tags'))
.removeClass("highlight")
;
})
;
Was dies zunächst durchläuft sind alle Ihre markierten Bilder und ermittelt, welche Tags auf jedem davon sind, diese in das data() dieses Elements speichert. Das bedeutet, dass wir das nur einmal machen müssen und nicht jedes Mal.
Dann fügt es jedem markierten Bild ein hover-Ereignis hinzu, um alles zu finden, was mit einem der Tags dieses Bildes übereinstimmt und die Klasse "highlight" hinzuzufügen. Ebenso entfernt es die Klasse, wenn Sie den Mauszeiger herausbewegen.