Вы применяете только стили - поэтому вы должны использовать CSS, а не Javascript.
Создайте файл CSS и добавьте следующее:
ul.image-grid:hover {
/* Opacity and color rules for whole ul in here */
}
И вместо того, чтобы идентифицировать <li>
s по их типу данных, вы должны добавить к ним классы, так что вы можете сделать:
ul.image-grid > li.kindertanz:hover {
/* Opacity and color rules for this li in here */
}
Обновление: требуется выделять не только то, что <li>
, над которым находится мышь, но и все остальные <li>
с тем же data-type
. Javascript для этого:
var $allItems = $("ul.image-grid li");
// Notice that hover() can take two functions,
// one for mouseenter, one for mouseleave
$allItems.hover(function () {
// Mouseenter
$allItems.css("opacity", "0.1"); // No need for each(),
// jquery will apply to all elements
// Depending on your jquery version...
// If you're using jQuery 1.4.3+ you can do this:
var type = $(this).data("type");
// If you're using jQuery 1.4.2 and below, you have to do this:
var type = $(this).attr("data-type");
// Get all items of the same type
$("li[data-type=" + type + "]").css({
// You can set multiple CSS rules in one go like this
"opacity": "1",
"background-color": "#232628",
"border-color": "black"
});
}, function () {
// Do something similar on mouseleave
});
Надеюсь, что наконец-то поможет!
Sidenote: хотя вышеприведенное сработает, я бы рекомендовал установить класс CSS для выделенного состояния. Таким образом, вместо того, чтобы связываться со всеми атрибутами CSS в вашем javascript, вы можете просто сделать .removeClass("highlight")
для всех элементов и .addClass("highlight")
для остальных.