0

我希望 jQuery 提取 url,然后解析它以查找机场。如果找到机场,我想在<a包含 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 获取 url。var search_name = location.search; 警报(搜索名称);

给了我弹出窗口

?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");
    }

    });

但这不起作用。

4

3 回答 3

1

location.search是包含机场的部分。它是以下所有内容?,不包含在location.pathname

于 2012-06-24T21:58:42.087 回答
1

From MDN: an example on getting value from search string.

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

alert(loadPageVar("name"));  
于 2012-06-24T22:03:25.100 回答
1

...经过一些小的更正,这应该可以工作:http: //jsfiddle.net/a4tWE/2/

  • 改用 location.href

  • :contains 选择器区分大小写

  • 拆下支架

    if ((path_name.search("airports") > 0) {

  • 删除了 find ,就像 contains 工作一样。

于 2012-06-24T22:11:01.740 回答