将类添加到' body'各种不同的商店页面

时间:2016-09-01 07:59:11

标签: jquery regex squarespace

我正在建立一个商店并尝试将不同的body类添加到三个页面。这是三页:

1)主页:example.com/shop/

2)项目页面:example.com/shop/model-xxxx/

3)类别页面:example.com/shop/?category=xxxx/

以下是我的尝试:

if (window.location.href.match(new RegExp('/shop/.+')) ) {

    jQuery('body').addClass('shop-item');

} else if (window.location.href.match('/shop/')) {

    jQuery('body').addClass('shop');

} else if (window.location.href.match('/shop/?category=')) {

    jQuery('body').addClass('shop-category');

}

理想情况下,/shop/页面会将shop类添加到body/shop/model-xxxx/页面会添加shop-itembody/shop/?category=xxxx/页面会将shop-category类添加到body

前两个工作,但类别页面将shop-item添加为类而不是shop-category,因为该规则在第一行中定义。

问题:如何确保将shop-category类添加到类别页面?

2 个答案:

答案 0 :(得分:1)

不知何故,如果你在表达式周围使用引号,JS不喜欢匹配转义的问号。

这是经过测试和运作的:



function checkUrl(url) {
  if (url.match(/\/shop\/\?category/)) {
    console.log(url, "-> category");
  } else if (url.match(new RegExp('/shop/.+'))) {
    console.log(url, "-> item");
  } else if (url.match('/shop/')) {
    console.log(url, "-> shop");
  }
}


checkUrl('exmaple.com/shop/');
checkUrl('exmaple.com/shop/?category=blub');
checkUrl('exmaple.com/shop/other');




答案 1 :(得分:0)

在第一条规则中使用negative-lookahead

if (window.location.href.match(new RegExp('/shop/(?!\?category).+')) ) {

    jQuery('body').addClass('shop-item');

} else ...

同时确保您的第二部分网址不以?category

开头