Jquery: условно добавить класс, если URL содержит конкретное значение хеша - PullRequest
2 голосов
/ 05 августа 2011

Как я могу добавить условное утверждение, которое говорит что-то вроде

if(window.location.href.indexOf("#/brandpartners"))
    {
    $("#brandpartners").addClass("specialbrand");
    }

Хэш, кажется, нарушает утверждение.Есть ли лучший способ?

Ответы [ 4 ]

9 голосов
/ 05 августа 2011

Прежде всего, вы не можете использовать indexOf таким образом.Возвращает -1, когда не найдено, что не ложно.

Для меня гораздо больше смысла просто использовать встроенный анализ хеш-значения в объекте location.Я бы предложил сделать это следующим образом:

if (window.location.hash == "#brandpartners") {
    $("#brandpartners").addClass("specialbrand");
}

Я не знаю вашу структуру URL, но не должно быть нуля после косой черты # для простого значения хеша.Но если вы настаиваете на использовании косой черты, это будет выглядеть так:

if (window.location.hash == "#/brandpartners") {
    $("#brandpartners").addClass("specialbrand");
}
1 голос
/ 05 августа 2011

indexOf() возвращает -1, если строка не найдена, что оценивается как "правдивое", так что ваш оператор if не выполняет то, о чем вы думаете.Так что попробуйте:

if (window.location.href.indexOf("#/brandpartners") != -1) {}

1 голос
/ 05 августа 2011

Как и @ jfriend00, должно быть:

if(window.location.href.indexOf("#/brandpartners")!=-1)
            {
$("#brandpartners").addClass("specialbrand");
            }
1 голос
/ 05 августа 2011

Хеш (#) не нарушает утверждение для меня вообще.Но я не знаю точно, почему у вас есть / там, когда вам это не нужно.

var str = "http://stackoverflow.com/questions/6950161#hmenus";
alert(str.indexOf("#hmenus"));

Этот код предупреждает 42, что означает, что он должен делать то, что вы хотите.I

...