3

4 つのサブカテゴリに分かれている Web サイトがあります。各カテゴリには、親カテゴリに応じて変更したい 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");
  }
});

それはまさに私が望むことです!ただし、一度に 1 つのカテゴリ (firstcategory) でのみ機能します。私の質問は、次の 3 つのカテゴリを変更できる if/else ステートメントを記述できますか? または、4 つの個別の JS ファイルを作成する必要がありますか?

4

2 に答える 2

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 に答える