2016-09-01 29 views
0

我正在建造一家商店并尝试在三个页面中添加不同的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/ p年龄将shop的等级添加到body/shop/model-xxxx/页将具有shop-item的等级添加到body,并且/shop/?category=xxxx/页将具有shop-category的等级添加到body

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


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

+0

让你的最后一次检查(' '/店/类别=?'')的第一次检查。 –

+0

@ mpf82我尝试过,但类别页面仍然获得'shop-item'类而不是'shop-category'类。这里是代码重新排序:https://jsfiddle.net/wzxzcaw4/ – J82

回答

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

+0

谢谢。将'类别'移动到顶部并逃离角色就像魅力一样工作。 – J82

0

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

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

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

} else ... 

这同时确保您的URL的第二部分不?类别

相关问题