0

こんにちは私はメニューで私のウェブサイトにいくつかの問題を抱えているようです。最初にページをロードすると、メニューの最初の要素でIE9でアクティブなクラスが必要になります。アクティブなクラスはメニューのすべての要素に拡張され、他のブラウザーではクラスはまったく追加されません。メニューボタンをクリックし始めると、すべてが正常に実行され始めます。

奇妙なことに、これは、たとえばhttp://www.foxteam.net/をロードしようとした場合にのみサーバーで発生しますが、 http ://www.foxteam.net/index.phpをロードすると、サイトは正常に機能します。すべてのブラウザで。http://www.foxteam.net/を開いてもブラウザがファイルを開くので、これは私にとって非常に混乱しindex.phpます。

私の場合の問題は何ですか?

メニューは、include関数にheader.php含まれているという別のファイルにあります。index.php

これは私がこの効果を作成するために使用したコードですが、昨日はすべて正常に機能し、今日は連絡先ページでのみ機能したため、役立つとは思えません。

<ul id="main-menu">
         <li><a href="index.php" class="active">home</a></li>
         <li><a href="about.php">about us</a></li>
         <li><a href="portfolio.php">portfolio</a></li>
         <li><a href="contact.php">contact us</a></li>
</ul>

jQuery:

$(document).ready(function(){
            var i = document.location.href.lastIndexOf("/");
            var currentPHP = document.location.href.substr(i+1);
            $("ul#main-menu li a").removeClass('active');
            $("ul#main-menu li a[href^='"+currentPHP+"']").addClass('active');
});
4

3 に答える 3

2

ページを見て、URLのページセグメントを使用してページ上のリンクを見つけようとしています。

http://www.foxteam.net/index.phpを使用すると、コードはhrefを「index.php」に設定してacnhorを取得できます。ただし、URL http://www.foxteam.net/を使用すると、ページセグメントが空白になるため、$("ul#main-menu li a[href^='"+currentPHP+"']")どのリンクとも一致しません。

ページ内の現在のドキュメント読み込みスクリプトを次のスクリプトに置き換えます。

$(document).ready(function(){
        var i = document.location.href.lastIndexOf("/");
        var currentPHP = document.location.href.substr(i+1);
        $("ul#main-menu li a").removeClass('active');
        var link = $("ul#main-menu li a[href^='"+currentPHP+"']");
        if(link.length < 1) {
            link = $("ul#main-menu li a:first");
        }
        link.addClass('active');
});

IEの問題の場合:これを試してください(テストされていません)

$(document).ready(function(){
        var i = document.location.href.lastIndexOf("/");
        var currentPHP = document.location.href.substr(i+1);
        $("ul#main-menu li a").removeClass('active');
        var link = $("ul#main-menu li a[href^='"+currentPHP+"']");
        if(currentPHP.length < 2 || link.length < 1) {
            link = $("ul#main-menu li a:first");
        }
        link.addClass('active');
});
于 2012-07-11T14:19:16.787 に答える
0

答えを考えると、私はこの質問に答えました

IE8 v8は、JS関数が要素属性を変更しているにもかかわらず、DOM要素のクラスを変更していません

クラスを追加/削除するのではなく、切り替えることがすべてだと思います

于 2012-07-11T14:19:22.213 に答える
0

JavaScriptを使用してクラスを追加および削除する理由は、JavaScriptがオフになっている場合にサイトにアクセスしやすくするために、裏付けでこれを行うことです。これにより、現在のリンクの問題も解決されます。

この投稿をチェックしてくださいphpでhtmlメニューにclass='active'を追加する方法

于 2012-07-11T14:38:31.013 に答える