3

我有一个分为 4 个子类别的网站。每个类别都包含我想根据父类别更改的 html 文件。基本上,我希望 jquery 读取 HTML 文档的文件夹名称,并根据名称启动脚本。我希望每个类别都针对不同的类别(这就是为什么我需要单独的类别)我已经解决了以下代码:

$(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");
  }
});

它正是我想要的!但一次只能处理一个类别(firstcategory)。我的问题是:我可以写一个 if/else 语句来允许我更改另外三个类别吗?还是我必须编写 4 个单独的 JS 文件?

4

2 回答 2

3

首先将路径名拉入变量中。然后你可以简单地使用一系列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
}

我建议只为要应用它的每个操作添加一个类。元素可能有不止一个类:)

于 2015-01-16T02:10:09.043 回答
1

javascript 中的switch语句是根据您的情况量身定制的。策略如下:使用正则表达式提取与“firstcategory”、“secondcategory”等之一匹配的window.location.pathname部分,并使用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;
  }
}); 
于 2015-01-16T02:06:05.047 回答