在 Jquery 中,如何将 If/else 与 window.location.pathname.indexOf 一起使用?
in Jquery, How can I use If/else with window.location.pathname.indexOf?
我有一个分为 4 个子类别的网站。每个类别包含 html 个文件,我想根据父类别更改这些文件。基本上,我希望 jquery 读取 HTML 文档的文件夹名称,并根据名称启动脚本。我希望每个类别针对不同的 class(这就是为什么我需要单独的类别)我已经解决了这个代码:
$(document).ready(function() {
$('.workopen').click(function(e) {
$(this).siblings('.open').addBack().toggleClass('open');
e.stopPropagation();
});
if (window.location.pathname.indexOf("firstcategory") > -1) {
$('.work .workopen .four').siblings('.open').addBack().toggleClass('open')
$('.one .inner2, .two .inner2, .three .inner2').hide();
$('.etc').css("text-decoration", "underline");
}
});
它完全符合我的要求!但一次只适用于一个类别(第一个类别)。我的问题是:我可以写一个 if/else 语句来允许我再更改三个类别吗?还是我必须写 4 个单独的 JS 文件?
javascript 中的 switch
语句是为您的情况量身定做的。策略如下:使用正则表达式提取 window.location.pathname 与 'firstcategory'、'secondcategory' 等之一匹配的部分,并使用 switch 语句:
$(document).ready(function() {
$('.workopen').click(function(e) {
$(this).siblings('.open').addBack().toggleClass('open');
e.stopPropagation();
});
var matches = /(first|second|third|fourth)category/.exec(window.location.pathname);
switch (matches[0]){
case 'firstcategory':
$('.work .workopen .four').siblings('.open').addBack().toggleClass('open')
$('.one .inner2, .two .inner2, .three .inner2').hide();
$('.etc').css("text-decoration", "underline");
break;
case 'secondcategory':
// second category stuff
break;
case 'thirdcategory':
// third category stuff
break;
case 'fourthcategory':
// fourth category stuff
break;
}
});
首先将路径名拉入变量。然后你可以简单地使用一系列 if-else
语句。
var pathName = window.location.pathname;
if (pathName.indexOf("firstcategory") > -1) {
// what you want to show/hide
} else if (pathName.indexOf("secondcategory") > -1) {
// what you want to show/hide
} else if (pathName.indexOf("thirdcategory") > -1) {
// what you want to show/hide
} else if (pathName.indexOf("fourthcategory") > -1) {
// what you want to show/hide
}
我建议只向每个要应用它的操作添加一个 class。元素可能有多个 class :)
我有一个分为 4 个子类别的网站。每个类别包含 html 个文件,我想根据父类别更改这些文件。基本上,我希望 jquery 读取 HTML 文档的文件夹名称,并根据名称启动脚本。我希望每个类别针对不同的 class(这就是为什么我需要单独的类别)我已经解决了这个代码:
$(document).ready(function() {
$('.workopen').click(function(e) {
$(this).siblings('.open').addBack().toggleClass('open');
e.stopPropagation();
});
if (window.location.pathname.indexOf("firstcategory") > -1) {
$('.work .workopen .four').siblings('.open').addBack().toggleClass('open')
$('.one .inner2, .two .inner2, .three .inner2').hide();
$('.etc').css("text-decoration", "underline");
}
});
它完全符合我的要求!但一次只适用于一个类别(第一个类别)。我的问题是:我可以写一个 if/else 语句来允许我再更改三个类别吗?还是我必须写 4 个单独的 JS 文件?
javascript 中的 switch
语句是为您的情况量身定做的。策略如下:使用正则表达式提取 window.location.pathname 与 'firstcategory'、'secondcategory' 等之一匹配的部分,并使用 switch 语句:
$(document).ready(function() {
$('.workopen').click(function(e) {
$(this).siblings('.open').addBack().toggleClass('open');
e.stopPropagation();
});
var matches = /(first|second|third|fourth)category/.exec(window.location.pathname);
switch (matches[0]){
case 'firstcategory':
$('.work .workopen .four').siblings('.open').addBack().toggleClass('open')
$('.one .inner2, .two .inner2, .three .inner2').hide();
$('.etc').css("text-decoration", "underline");
break;
case 'secondcategory':
// second category stuff
break;
case 'thirdcategory':
// third category stuff
break;
case 'fourthcategory':
// fourth category stuff
break;
}
});
首先将路径名拉入变量。然后你可以简单地使用一系列 if-else
语句。
var pathName = window.location.pathname;
if (pathName.indexOf("firstcategory") > -1) {
// what you want to show/hide
} else if (pathName.indexOf("secondcategory") > -1) {
// what you want to show/hide
} else if (pathName.indexOf("thirdcategory") > -1) {
// what you want to show/hide
} else if (pathName.indexOf("fourthcategory") > -1) {
// what you want to show/hide
}
我建议只向每个要应用它的操作添加一个 class。元素可能有多个 class :)