Таким образом, у каждого изображения есть несколько тегов (например, «яблоко», «красный», «большой»), и когда вы наводите мышку на большое красное яблоко, вы хотите, чтобы все другие яблоки, большие вещи и красные вещи загорелись до
Как предположил Кгианнакакис, я бы поместил эти данные в атрибут класса изображения - единственное отличие состоит в том, что я добавляю к каждому классу какой-то префикс, чтобы вы не конфликтовали с другими классами на своей странице.
<img src="the-big-red-apple.jpg" class="tagged tag-big tag-red tag-apple" />
Я также добавил туда дополнительный класс под названием «tagged», чтобы вы могли отличать свои фотографии с тегами от навигационных изображений или чего-либо еще.
$('img.tagged')
.each(function() {
var thisClasses = this.className.split(/s+/); // array of classes.
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")
;
})
;
То, что это делает, - это сначала перебирает все ваши помеченные изображения и определяет, какие метки есть на каждом из них, сохраняя это в данных этого элемента (). Это означает, что нам нужно делать это только один раз, а не каждый раз.
Затем к каждому теговому изображению добавляется событие hover , чтобы найти что-либо, совпадающее с любым из тегов этого изображения, и добавить класс «highlight». Аналогичным образом он удаляет класс при наведении мыши.