Если я понимаю, что вы спрашиваете, вы можете сделать это с помощью «селектора атрибутов».
Примерно так:
$("li.prod[data-channels~='"+channel+"'").each(function (index) {
$(this).fadeTo("fast", 1);
});
Другими словами, для выбора индекса 0, 2, 3 из вашего примера:
$("li.prod[data-channels~='8'")
Если вы хотите затемнить остальныеиз них до .3
, я бы отмечал соответствующие каналы, а затем выбирал всех, у кого нет отметки.Вот так:
Обновлено
Итак, для вашей конкретной задачи, показать / скрыть, когда его канал данных содержит текущее значение ползунка, привязать его к событию слайда:
function (event, ui) {
...
// reset marker
$("li.prod").attr("data-active", "false");
// show channels
$("li.prod[data-channels~='"+ui.value+"'").each(function (index) {
$(this).fadeTo("fast", 1);
$(this).attr("data-active", "true"); // mark them
});
// hide rest
$("li.prod[data-active!='true'").each(function (index) {
$(this).fadeTo("fast", .3);
});
}
Обновлено (x2)
Благодаря обратной связи @YiJiang нам не нужно делать все эти маркеры.Просто используйте селектор siblings
, чтобы объединить каналы, которые вы хотите скрыть.Вот так:
function (event, ui) {
...
// show target channels
$("li.prod[data-channels~='"+ui.value+"'").fadeTo("fast", 1)
.siblings().fadeTo("fast", .3);
}