0

我设法根据 ID 将哈希标记附加到 URL,但是,它没有正确隐藏/显示 IE8 中的 DIV。此外,我注意到添加 .selected 类的 jQUery 部分无法正常运行。任何改变有人可以借给我一些专业知识吗?它在 Chrome/Firefox/Safari 中运行良好,但是,可怕的 IE 是一个顽固的骡子!

提前谢谢!

PS - 我使用了这里列出的方法:jqueryfordesigners.com/enabling-the-back-button/

这也是我正在使用的代码:

    jQuery(window).load(function () {
        var selectCont = jQuery('.selectCont > div');
        selectCont.hide().filter(':first').show();

        jQuery(window).bind('hashchange', function () {
        var hash = window.location.hash || '#clinicalfaculty';

        selectCont.hide();
        selectCont.filter(hash).show();
            e.preventDefault();

        jQuery('#selectBtn ul.btnNav a').removeClass('selected');
        jQuery('a[hash=' + hash + ']').addClass('selected');
        });
    jQuery(window).trigger('hashchange');
    });

@Dan Puzey——

对于那个很抱歉!我是stackoverflow的新手。

我正在使用的基本代码可以在这里找到:massgeneral.org/emergencymedicine/ourdoctors/EM-Listing.htm

我依赖的 ID 是:#clinicalfaculty、#researchfaculty 和 #fellows,可以在我刚才提到的 HTML 的第 34-36 行找到。当用户单击其中一个按钮(带有 ID)时,JavaScript 会隐藏与 ID 关联的其他两个 DIV,并显示用户单击的 ID。同时,带有 ID 名称的主题标签会附加到用户的“返回”功能。如您所见,在 Firefox 中,它完全按照应有的方式工作。但是,当您在 IE8 中加载它时,它无法正常工作。

就 .selected 而言,我希望能够将 .selected 类应用于单击的按钮以应用自定义样式以视觉通知用户该按钮已被选中并且与该按钮关联的内容当前是正在显示。但是, .selected 没有被正确地添加为一个类。我也不完全确定为什么。

我为正确操作过滤而编写的初始 jQuery 如下所示。但是,它没有附加 # 标签,也不支持使用“返回”按钮。

var index = 0, hash = window.location.hash;
    jQuery(window).load(function(){
        jQuery('#selectBtn a').click(function(e) {
        jQuery('.selectCont > div').hide();
        jQuery(this.hash).show();
            e.preventDefault(); //to prevent scrolling
    });
});

参考链接

4

2 回答 2

0

我不是 100% 确定您在编写了这么多自己的代码之后会想要迁移到这里,但是 History.js 为您完成了所有这些,并且是跨浏览器兼容的,它是一个非常棒的库,适合您'正在尝试实现,因为它是一个完整的 JavaScript 状态处理库。

http://balupton.github.com/history.js/demo/

于 2012-09-20T15:54:45.440 回答
0

Not sure if this is the fix but it appears that you've forgotten to pass the event argument into the haschange function. Change the signature to this.

jQuery(window).bind('hashchange', function (e) { ... });
于 2012-09-20T17:15:40.180 回答