使用location.pathname添加类

时间:2012-06-24 21:56:42

标签: jquery css url jquery-selectors

我希望jQuery拉出网址,然后解析它以找到机场。如果找到机场,我想在列表项<a&gt;中添加一个类。标签包含html“机场”。

这是我到目前为止所做的:

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>

网址为:

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

这是语法问题还是“尝试其他方式”问题?

更新:

使用警报建议,我能够验证我使用location.search获取网址。 var search_name = location.search; 警报(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");
    }

    });

但这不起作用。

3 个答案:

答案 0 :(得分:1)

location.search是包含机场的部分。这是?之后的所有内容,并未包含在location.pathname

答案 1 :(得分:1)

来自MDN:从搜索字符串中获取值的示例。

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

alert(loadPageVar("name"));  

答案 2 :(得分:1)

......通过一些细微的修正,这应该有效:http://jsfiddle.net/a4tWE/2/

  • 使用location.href代替

  • :包含选择器工作区分大小写

  • 删除了支架

    if((path_name.search(“Airports”)&gt; 0){

  • 删除了find,因为包含了这项工作。