2012-06-24 4 views
0

Я хотел бы jQuery вытащить URL-адрес, а затем проанализировать его, чтобы найти аэропорты. Если обнаружено аэропортов, я хотел бы добавить класс в тег списка <a>, который содержит html «Аэропорты».using location.pathname, чтобы добавить класс

Это то, что я до сих пор:

JQuery

path_name=location.pathname; 

if ((path_name.search("airports") > 0) { 
     $("div.more li a").find(":contains('airports')").addClass("current-menu-item"); 
} 

HTML, выглядит следующим образом:

<ul> 
    <a class="static" href="#">ALL</a> 
    <li><a class="static" href="#">AIRPORTS</a></li> 
</ul> 

URL заключается в следующем:

http://localhost/site/?type=airports 

Является ли это проблемой синтаксиса или проблемой «Попробуйте другой способ»?

UPDATE:

Использование предупреждений предложение, я был в состоянии проверить, я получаю URL с помощью location.search. var search_name = location.search; alert (search_name);

дал мне всплывающий

?type=airports 

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

ОБНОВЛЕНИЕ 2

Это работает для изолированного инцидента.

var search_name = location.search; 
    if (search_name.search("airports") > 0) { 
     alert(search_name); 
     $("div.more a:contains('AIRPORTS')").addClass("active"); 
    } 

}); 

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

Как вы это делаете? Это то, что у меня есть

$(function() { 
    var search_name = location.search; 
    if (search_name.search("+ search_name +") > 0) { 
     alert(search_name); 
     $("div.more a:contains('AIRPORTS')").addClass("active"); 
    } 

    }); 

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

+0

попробовать 'search_name.search (SEARCH_NAME)' вместо 'search_name.search ("+ SEARCH_NAME +")' –

ответ

1

... с некоторыми незначительными поправками, это должно работать: http://jsfiddle.net/a4tWE/2/

  • б местоположение.HREF вместо

  • в: содержит селектор работает с учетом регистра

  • удален кронштейн

    если ((path_name.search ("аэропорты")> 0) {

  • удалены находку, так как содержит делает работу.

+0

Не я бы заменил path_name.search ("display") на path_name.search ("+ search_name +")? Я попробовал оба без везения. –

+0

yep, мой плохой (отредактирован). Вместо этого попробуйте location.href. –

+0

«Дисплей» был просто примером, как это было в URL-адресе jsfiddle. вы должны изменить его. –

1

location.search - часть, содержащая аэропорт. Это все после ? и не включено в location.pathname

1

От MDN: пример получения значения из строки поиска.

function loadPageVar (sVar) { 
return unescape(window.location.search.replace(new RegExp("^(?:.*[&\\?]" +  escape(sVar).replace(/[\.\+\*]/g, "\\$&") + "(?:\\=([^&]*))?)?.*$", "i"), "$1")); 
} 

alert(loadPageVar("name")); 
+0

Th отображается в предупреждении «Страница на локальном хосте говорит:« так что это выглядит как slike, он не может правильно потянуть URL. Есть ли шанс, что это происходит на локальном хосте? Кажется маловероятным. –

+0

Не уверен, где вы получаете «Страница на localhost говорит», но window.location - это URL-адрес документа, поэтому если URL-адрес http: // localhost - это ваше местоположение. – septemberbrain

Смежные вопросы