Изменить класс CSS с помощью jQuery

0

У меня есть меню, над которым я работаю, и я пытаюсь изменить класс CSS на ID и дочерний элемент.

У меня есть меню, в котором есть разделы (пример: aboutsection). Я добавил идентификатор в ul для этого раздела. То, что я хотел бы сделать, - это посмотреть атрибут href для каждого дочернего якоря идентификатора, и если текущий URL-адрес соответствует любой из ссылок в дочерних элементах, добавьте класс к идентификатору aboutsection "currentTab" и фактическому link добавьте класс "currentLink".

У меня есть следующий jQuery, но он не работает.

$(document).ready(function(){
$( "aboutsection" ).each( function(){
    if($(this).attr('href') == document.URL){
       $(this ).addClass( "currentLink" );
       aboutsection.addclass('currentTab');
    }
});
}); 
  • 0
    Можете ли вы опубликовать свой HTML, здесь также есть несколько синтаксических ошибок
  • 0
    Там нет такого понятия, как класс CSS. HTML имеет классы. У CSS есть селекторы классов. У DOM есть методы для получения элементов на основе их класса.
Показать ещё 2 комментария

3 ответа

2

Ваш общий подход к использованию

$(elementId).addClass('newClassName');

верно.

Однако весь цикл может оказаться бесполезным, потому что ваш селектор не может ничего вернуть.

Если aboutsection является классом элемента, попробуйте

$('.aboutsection').each(function(){
    $(this).addClass('currentLink');
});

который практически такой же, как:

$('.aboutsection').addClass('currentLink');

Если aboutsection - это идентификатор элемента (должен быть уникальным на всей странице), попробуйте

$('#aboutsection').addClass('currentLink');
  • 0
    Спасибо! Я вижу, что я пропустил некоторые вещи, когда я отправил.
  • 0
    Вот где я сейчас нахожусь: я пытаюсь увидеть, имеют ли дочерние элементы идентификатора значение currentURL. У меня есть это, но это не работает ... <script> $ ('li # aboutsection'). Each (function () {var currentUrl = window.location.href; if ($ (this) .children.attr (' href ') == currentURL) {$ (this) .addClass ("currentTab");}}); </ Скрипт>
0
$( "aboutsection" ).each( function(){  

не является правильным.

если "aboutsection" - это класс, который вам нужен:

$( ".aboutsection" ).each( function(){ 

или если вам нужен идентификатор:

$( "#aboutsection" ).each( function(){ 
0

Ваш код ищет HTML-элемент, заключенный в тег с именем aboutsection. Если это действительно идентификатор вашего элемента <ul>, вам нужно будет обновить свой код.

Кроме того, aboutsection.addClass() будет иметь никакого эффекта, поскольку он не определен:

$(function() {
    $('#aboutsection').each(function() {
        if($(this).attr('href') == document.URL)
        {
            $(this).addClass('currentLink');
            $(this).addclass('currentTab');
        }
    });
}); 
  • 0
    Разве это не сомнительный подход для циклического просмотра результатов, чей селектор применяется к уникальному идентификатору элемента?
  • 0
    Конечно. Но я не хотел предполагать, что это было удостоверение личности, в равной степени это могло быть имя класса. Я просто указывал на правильный синтаксис.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню