0

ページに 5 つのタブ システムがあるページがあります。各タブには左側のナビゲーション リストにリンクがあり、特定のタブを開いた状態でページに直接リンクするか、任意のタブ自体をクリックしてコンテンツを表示/非表示にすることができます。

これを行うには、location.hash を使用し、次のように各タブ ID を URL に追加します。

http://localhost:8082/departments/site-facilities/enviroment/iso-14001#impactAreas

誰かがちょうどヒットすることができます:

http://localhost:8082/departments/site-facilities/environment

..タブ システムを参照して、URL にハッシュを追加する iso-14001 タブをクリックするか、その URL を上に入力するか、左側のナビゲーション バーのリンクをクリックします。

Drupal で抱えている問題は、基本的な html リスト (これは追加のリストであり、プライマリ メニューやセカンダリ メニューではありません) で、次のような a hrefs リンクに入力したことです。

< a href="/departments/site-facilities/environment/iso-14001#impactAreas">link here</a>

サイト内の他の場所で機能します。ただし、ユーザーがタブ付きの実際のページにアクセスすると、左側のリストのナビゲーション リンクをクリックすると、ブラウザーの URL は次のようになります。

http://localhost:8082/departments/site-facilities/departments/site-facilities/environment/iso-14001#impactAreas 

つまり、Drupal が新しいページのリロードを認識せず、href の場所を既存の URL に追加しているだけのようです。

これがphpのものでハッシュである場合、別のjqueryなどが必要な場合、理由はわかりません.

ここに私がまとめた基本的なjqueryがあります:

function setupSubNav(){
  pathName = window.location.href;
  $('.hiddenSection').css('display','none');
  pathArray = pathName.split('#');
  param = pathArray[pathArray.length-1];
  if(pathArray.length>1){
    showSection(param,$('.' + param + 'Trigger'));
  }
  else
  {
     if ($('body.fervens-a .pageTabs li')) {
        var sectionName = $($('body.fervens-a .pageTabs li')[0]).attr('class').split('Trigger')[0];
            showSection(sectionName, $($('body.fervens-a .pageTabs li')[0]));
        }
  }
    $('body.fervens-a .pageTabs li').click(function(){
        if (!($(this).hasClass('current'))) {
            var sectionName = $(this).attr('class').split('Trigger')[0];
            showSection(sectionName, $(this));
        }
    });
}
function showSection(sectionName,$navObj) {
    if (sectionName != 'iso14001' && sectionName != 'environmentalPolicy' && sectionName != 'impactAreas' && sectionName != 'goals2013' && sectionName != 'isoDocs') {
        sectionName = 'iso14001';
        $navObj = $($('body.fervens-a .pageTabs li')[0]);
    }
        $('body.fervens-a .pageTabs li').removeClass('current');
        $navObj.addClass('current');
        $('.hiddenSection').css('display','none');
        $('#' + sectionName + 'Content').css('display','block');
        window.location.hash = sectionName;
}

window.location に既にハッシュがあるかどうかをどうにかしてチェックし、そうであれば、新しいものを追加する前にそれを削除する必要がありますか? 正しく聞こえませんが、なぜこれが機能しないのかがわかりません。

以前 Schwab ミニサイト用に書いた以前のコードを使用し、ハッシュを追加しただけですが、そこはすべて html でしたが、これは Drupal であり、php であるため、他に何が欠けているのか疑問に思っています。

ありがとう

4

1 に答える 1

0

聖牛。「?」を使用するのと同じくらい簡単でした。「#」の代わりに。

まあ、それが私たちが学ぶ方法です。ご覧いただきありがとうございます。

于 2013-03-14T22:00:12.487 に答える