【问题标题】:Add class to <body> if query string is in url如果查询字符串在 url 中,则将类添加到 <body>
【发布时间】:2016-04-24 03:35:44
【问题描述】:

我正在与 woocommerce 合作。当您使用产品过滤器时,它会呈现一个带有查询字符串(或者我认为是查询字符串)的 url http://www.webdesignui.com/looms/browse/?filtering=1&filter_collection=1481

由于某种原因,WooCommerce 不会根据您所在的网址更改正文类。它将“存档”作为正文类。

我想想办法说,如果 url 有 ?filtering=,添加 class="filterison"。像这样的

<script>
$(document).ready(function() {
    if(url.indexOf('a[href*="/looms/browse/?filtering=1') > -1){
        $("body").addClass("filterison");
    }
});
</script>

【问题讨论】:

  • 不应该是.indexOf('filtering=')吗?您不想要 a[href*=" 部分,并且您真的不需要在 ?要么。

标签: jquery query-string addclass


【解决方案1】:

您对 Jquery 选择器类型的语法和普通字符串 indexOf 方法感到困惑。

如果要查找字符串是否有子字符串,则必须使用indexOf 输出主字符串中子字符串的起始字符的索引。

EG : "I am a main string".indexOf('string') 将给出s 的索引作为输出

所以在你的情况下它必须是

$(document).ready(function() {
    if(url.indexOf('/looms/browse/?filtering=1') > -1){
        $("body").addClass("filterison");
    }
});

【讨论】:

  • 嗨,雷迪,感谢您的回复。我添加了您提供的代码,但仍然没有添加 webdesignui.com/looms/browse/… What is > -1 实际上在做什么,抱歉新手在这里试图理解这一切
  • 这只是一种检查子字符串的方法。因此,当检查较大字符串中的子字符串时,子字符串可以在开头出现。在这种情况下。 IndexOf 将返回 0.. 所以逻辑就像 0 > -1 ...
  • 明白了。根据您提供的代码,如果 ?filtering 可用,我仍然没有添加 body 类。有什么想法吗?
  • @Tom 我们在代码中检查'/looms/browse/?filtering=1' 这个子字符串,而不仅仅是'?filtering'.. 如果你只想检查,那么使用这个url.indexOf('filtering') &gt; -1
  • 嘿 Reddy,我无法让它工作,我不得不使用 if(window.location.href.indexOf("?") > -1) 不管怎样它都在工作!非常感谢您的帮助
【解决方案2】:

这是我能够开始工作的最终代码

<script type="text/javascript">
$(document).ready(function () {
    if(window.location.href.indexOf("?") > -1) {
       $("body").addClass("filterison");
    }
});
</script>

【讨论】:

    猜你喜欢
    • 2018-10-30
    • 1970-01-01
    • 1970-01-01
    • 2018-02-11
    • 1970-01-01
    • 2015-07-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多