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');
    });

@ダン・プジー --

ごめんなさい!私はスタックオーバーフローが初めてです。

私が使用している基本コードは、massgeneral.org/emergencymedicine/ourdoctors/EM-Listing.htm にあります。

私が依存している ID は、#clinicalfaculty、#researchfaculty、および #fellows です。これらは、先ほど参照した HTML の 34 ~ 36 行目にあります。ユーザーがボタンの 1 つ (ID 付き) をクリックすると、JavaScript は ID に関連付けられた他の 2 つの 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

これが修正かどうかはわかりませんが、イベント引数を haschange 関数に渡すのを忘れているようです。署名をこれに変更します。

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