Сопоставить тег привязки с конкретным href - PullRequest
0 голосов
/ 20 апреля 2019

У меня есть панель с боковой панелью с навигационными ссылками, где я выделяю каждую ссылку на боковой панели, когда вы переходите по ссылке. Я сопоставляю ссылку, делая это

$(function() {
    var item = $('.sidebar-menu a[href="' + location.href + '"]');

    item.parent().addClass('active');
});

Но проблема в том, что если вы добавите хеш (#) к адресу, он больше не будет соответствовать ссылке. И я хочу, чтобы это соответствовало этому независимо.

В настоящее время это будет соответствовать:

  • mysite.com / студенты / компания

Но это не будет соответствовать:

  • mysite.com / студентов / компаний #
  • mysite.com / студентов / компаний / подстраниц

Я хочу, чтобы оно совпадало со всем, что включает "mysite.com/students/companies"

Ответы [ 2 ]

1 голос
/ 20 апреля 2019

Я думаю, у вас проблема, потому что ваш тег привязки выглядит примерно так:

<a href='somethingelse.php'>Something Else</a>

Я заметил, что вы называете родительский div, так что ... вы оборачиваете свой якорный тег div или ul, li или чем-то еще ..

Что вы можете сделать, просто добавьте некоторые дополнительные данные, такие как 'data-user =' ' так <div data-user='companies'><a href='somethingelse.php'>Something Else</a></div>

Так что теперь, если кто-то будет в компаниях или что-то еще, просто сделайте трюк:

var url_string = window.location.href;
var url = url_string.split('/')
var item = $('div[data-user='+url[3]+']).addClass('active');

Это будет работать для веб-страницы выглядит так: www.some.com/companies а также www.some.com/companies/sometihng четное www.some.com/companies/sometihng/more

0 голосов
/ 20 апреля 2019

Попробуйте с

$('.sidebar-menu a').filter(function() {
  return location.href.indexOf(this.href)!=-1;
}).parent().addClass('active');

var item = $('.sidebar-menu a[href*="' + location.pathname + '"]');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...