Это довольно просто при использовании JQuery:
$("a[data-period='" + someMethod() + "']").addClass("active");
Это, конечно, предполагает свой метод, который «возвращает либо„дней“или" неделя»называется someMethod
.
Адрес CodePen demo.
Если вам также необходимо убедиться, что другие несоответствующие элементы не имеют класс active
, удалите его и из них. Есть несколько способов сделать это. Это один хороший и чистый:
$("a[data-period]").removeClass("active");
$("a[data-period='" + someMethod() + "']").addClass("active");
... и это немного оптимизирована:
$("a[data-period]")
.removeClass("active")
.filter("a[data-period='" + someMethod() + "']")
.addClass("active");
... потому что вместо повторного выбора из DOM снова, он будет повторно использовать те начальный a[data-period]
результаты. К сожалению, это все равно приводит к удалению класса из элементов, которые в конечном итоге будут иметь его. Но это не имеет значения, если у вас нет тонны элементов (читай: сотни), у которых есть data-period
.
Тем не менее, если вы хотите (или необходимость), чтобы быть приверженцем об этом, это еще более оптимизировано:
$("a[data-period].active")
.not($("a[data-period='" + someMethod() + "']").addClass("active"))
.removeClass("active");
... но еще труднее читать.
сообщение вашего другого метода JS, и что вы уже пробовали. – tymeJV
Можем ли мы использовать JQuery? – Grinn
Да, я использую JQuery. Пожалуйста, предложите. – Shauny