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

Holy cow. It was as simple as using a "?" instead of a "#".

Well, that's how we learn. Thanks for looking.

于 2013-03-14T22:00:12.487 回答