【问题标题】:How to load a variable into .search如何将变量加载到 .search
【发布时间】:2012-06-25 11:02:43
【问题描述】:

我正在提取一个 url,然后将其转换为大写。我想将该变量加载到 .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 中的变量与锚 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 文本与锚标记中的 html 文本匹配。在这种情况下,“机场”。我想让它更流畅的原因是,锚标签是什么,“机场”和“车库”。然后它可以将传递给 url 的内容与相应的锚标记匹配,并添加“活动”类。

这里是fiddle

网址是 site/?type=AIRPORTS

【问题讨论】:

  • 您能否提供一些 HTML,以便我们了解您的功能可能无法正常工作的原因?尝试在 jsfiddle.net 上放置 javascript 和 HTML
  • 考虑到你的 if 语句的使用,我认为你最好检查它 != -1&gt;= 0 因为字符串是从零开始的,如果第一次出现是 0 它将失败.
  • 您是否在某处定义了String.prototype.search 函数? search_name.search(...) 来自哪里?
  • 为什么你的链接href是#而不是实际的url /?type=AIRPORTS?解决此问题将解决您的问题。
  • location.search 的值需要被解析以移除 "?type="...show some html

标签: javascript jquery css jquery-selectors


【解决方案1】:

假设 window.location.search 将为您提供 GET 查询字符串(在您的示例中,这将包含 ?type=AIRPORTS),我们需要开始过滤它以仅获取搜索词。一个非常原始的方法是只使用substr。例如

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

现在term 包含AIRPORTS。为了确保它是大写的,我们可以在上面调用ToUpperCase。例如

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');
});

【讨论】:

    猜你喜欢
    • 2011-09-28
    • 1970-01-01
    • 2015-11-19
    • 2010-11-19
    • 1970-01-01
    • 2017-07-13
    • 2011-01-11
    • 2013-12-01
    • 2017-06-29
    相关资源
    最近更新 更多