jQuery выполнить ПОСЛЕ загрузки следующей страницы, а не текущей - PullRequest
0 голосов
/ 05 мая 2019

У меня есть статическая боковая панель HTML, которая, кажется, добавляется каждый раз, когда я загружаю страницу на своем веб-сайте с помощью настраиваемого подключаемого модуля боковой панели (WordPress).

Я пытаюсь добавить класс ктекущий активный Тег на боковой панели, чтобы я мог его стилизовать.

Поскольку он добавляет статическую HTML-боковую панель каждый раз, когда я загружаю страницу, добавляемый класс удаляется после загрузки следующей страницы.

Это способ добавить класс после загрузки следующей страницы?Или, может быть, сохранить рассматриваемый элемент в переменной до загрузки следующей страницы?

$(document).ready(function() {
        var selector = 'a.custom-sidebar-item';
        var url = window.location.href;

        $(selector).each(function(){
            $(selector).removeClass('active-custom-sidebar-item');

            if(url == $(this).attr('href')) {
                $(this).addClass('active-custom-sidebar-item');
                $(this).css("border-bottom", "2px solid red");
            }
        });
});

РЕДАКТИРОВАТЬ:

Немного изменил код.

Вот что у меня в журнале консоли - https://imgur.com/a/g9JBMwO.

И вот что я пытаюсь достичь - https://imgur.com/a/W41xiOA.

Обходной путь На самом деле работал "$ (this) .css (" border-bottom "," 2px solid red ");".Все еще не уверен, почему "$ (this) .addClass ('active-custom-sidebar-item');"не работает.Поэтому я добавляю css напрямую с помощью jQuery, а не добавляю класс при загрузке.Что, я думаю, лучше всего.

PS: Причина, по которой я не использую .siblings () для удаления класса из других ссылок боковой панели, заключается в том, что некоторые из них являются тегамив и некоторые теги.Оптимизируем код позже.Код в настоящее время добавляет класс (проверено с console.log), но при загрузке следующей страницы он перезаписывается.

Ответы [ 2 ]

0 голосов
/ 05 мая 2019

Решением для меня оказалось ... вместо:

$(this).addClass("active-custom-sidebar-item");

на самом деле:

$(this).css("border-bottom", "2px solid red");

on window.ready () после проверки элемента с URL-адресом, на котором мы находимся. Добавление стиля с помощью сценария работало, так что в любом случае я достиг желаемого результата, но все еще не уверен, почему добавление класса не сработало ...

0 голосов
/ 05 мая 2019

Разместите один и тот же скрипт на всех страницах.Вы можете сделать это, включив его в общий колонтитул WordPress.В вашем коде вы, вероятно, удаляете класс сразу после его добавления, попробуйте это.

$(document).ready(function() {
   var selector = 'a.custom-sidebar-item';
   var url = window.location.href;
   $(selector).removeClass('active-custom-sidebar-item');
   $(selector).each(function(){   
      if(url == $(this).attr('href')) {
        $(this).addClass('active-custom-sidebar-item');
    }
   });
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...