如何将变量加载到.search中

时间:2012-06-25 00:49:51

标签: javascript jquery css jquery-selectors

我正在拉一个网址,然后将其转换为大写。我想将该变量加载到.search函数中以过滤结果。

这是我到目前为止所做的,但它无法正常工作:

$(function() {
    var search_name = location.search;
    var ucSearch = search_name.toUpperCase();

    if (search_name.search("airports")  > 0) {
        $("div.more a:contains("+ ucSearch +")").addClass("active");
    }

});

我认为这可能只是一个语法问题。

我想我最终会想要这样的东西:

$(function() {
   var search_name = location.search;
   var ucSearch = search_name.toUpperCase();

   if (search_name.search("+ ucSearch +")  > 0) {
       $("div.more a:contains("+ ucSearch +")").addClass("active");
   }
});

这样它就会将url中的变量与anchor html中的变量进行匹配。

更新:

这是我的HTML

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

所以我希望jquery获取url并将该url文本与anchor标记中的html文本进行匹配。在这个例子中“AIRPORTS”。我想让它变得更加流畅的原因是,有什么可以锚定标签,“AIRPORTS”和“GARAGES”。然后它可以匹配传递给url的相应锚标记并添加“active”类。

以下是fiddle

url是site /?type = AIRPORTS

1 个答案:

答案 0 :(得分:1)

前提是window.location.search会为您提供GET查询字符串(在您的示例中,这将包含?type=AIRPORTS)我们需要开始过滤此选项以仅获取搜索字词。一种非常原始方式就是使用substr。 e.g。

var term = window.location.search.substr('?type='.length);

现在term包含AIRPORTS。为确保资本化,我们可以在此处致电ToUpperCase。 e.g。

var term = window.location           // "http://somesite.com/?type=AIRPORTS"
           .search                   // "?type=AIRPORTS"
           .substr('?type='.length)  // "AIRPORTS"
           .toUpperCase();           // "AIRPORTS"

现在,转到jQuery并找到包含此搜索词的所有链接,并将其类设置为活动状态:

$('div.more a:contains("' + term + '")').addClass('active');

并且,所有在一起:

$(function(){ // document.ready
  var term = window.location.search.substr('?type='.length).toUpperCase();
  $('div.more a:contains("' + term + '")').addClass('active');
});