Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Присвоить пункту меню класс active??? (https://javascript.ru/forum/jquery/74780-prisvoit-punktu-menyu-klass-active.html)

Julia1991 07.08.2018 14:32

Присвоить пункту меню класс active???
 
Помогите!!!! Нужно присвоить пункту меню класс active если он активен! Вот скрипт
$(function() {
    $('.menu-item').on('click', 'a', function(event) {
         $(this).addClass("active").siblings().removeClass("active");  
         event.preventDefault();
    });
});



Добавила этот вариант скрипта, но он тоже не работает
<script>
		$(function () { 
    $('.menu-item a').each(function () {
        var location = window.location.href;
        var link = this.href; 
        if(location == link) {
            $(this).addClass('active');
        }
    });
});
</script>

j0hnik 07.08.2018 19:39

Julia1991,
у него класс open появляется, чем не устраивает?

Julia1991 07.08.2018 20:36

У активного пункта меню open не появляется

Malleys 07.08.2018 20:45

$(function() {
    $("a[href='" + window.location.href.replace(/\/(ru|ua)/g,"") + "']").addClass("active");
});

Julia1991 08.08.2018 09:08

Большое спасибо, помогло

Julia1991 08.08.2018 11:04

Не срабатывает для страницы блога

Nexus 08.08.2018 11:32

Стремно такое публиковать, но...
const patterns = [];
let url = location.href.replace(/\/(ru|ua)/g, '');

patterns.push(url);
if (url.substr(-1) === '/') {
    url = url.substr(0, url.length - 1);
    patterns.push(url);
};
url = url.split(location.host, 2).pop();
patterns.push(url);
if (url.substr(0, 1) === '/') {
    url = url.substr(1);
    patterns.push(url);
};
if (url.indexOf('#')) {
    patterns.push(
        url.split('#').shift(),
        '/' + url.split('#').shift()
    );
};
if (url.indexOf('?')) {
    patterns.push(
        url.split('?').shift(),
        '/' + url.split('?').shift()
    );
};

patterns.forEach(function(href) {
    const list = document.querySelectorAll('.menu-item a[href="' + href + '"]');
    if (list)
        list.forEach(function(node) {
            node.classList.add('active');
        });
});

Julia1991 08.08.2018 11:53

Нет, этот не работает

Nexus 08.08.2018 11:56

Цитата:

Сообщение от Julia1991
Нет, этот не работает

оберните мой код в это:
$(function() {
    //тут код
});

Julia1991 08.08.2018 12:37

Теперь работает, спасибо! А как сделать чтоб при клике на активный пункт меню не срабатывал переход? Вот мой код, но он не работает
document.getElementsByClassName('active').onclick = function(){
   return false; 
};


Часовой пояс GMT +3, время: 12:26.