5

現在のページに対応する「押された」ボタンの動作が「押されていない」ボタンとは異なる(具体的には、ホバーしても別の色にフェードしない)jQueryを使用して色あせナビゲーションメニューを作成したいと思います。www.guitaracademy.nlの例を見ると、window.location.hashプロパティでネイティブJavaScriptを使用していることがわかります。

ただし、このハッシュをjQueryに取り込むことができないようです。スクリプトの例を次に示します。

<html>
<head>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js"></script>
<script type="text/javascript">
$(function(){
    var p=window.location.hash;
    $("#clickme").click(function(){
        alert(p)
    });
});
</script>
</head>
<body>
<a href="#test">Click me first</a>
<div id="clickme">Then click me</div>
</body>
</html>

このページを読み込んだ後、[最初にクリックしてください]リンクをクリックします。次に、アドレスバーに元のURLに「#test」が追加されているのがわかります。ただし、[次にクリックしてください] divをクリックすると、空のアラートが表示されます。ハッシュは「更新」されていないようです。

これについての助けをいただければ幸いです。

4

4 に答える 4

6

クリックが呼び出されるたびに呼び出されるように、ハッシュの呼び出しを関数内に移動してみてください。あなたがそれを持っていた方法では、それはページの最初のロードでのみロードされていました。

$(function(){
    $("#clickme").click(function(){
        var p=window.location.hash;
        alert(p)
    });
});
于 2011-10-24T19:18:40.803 に答える
2

var p=window.location.hash;クリックリスナーの中に入れてみてください:

<script type="text/javascript">
    $(function(){
        $("#clickme").click(function(){
            var p=window.location.hash;
            alert(p)
        });
    });
</script>
于 2011-10-24T19:20:23.143 に答える
0

divの関数は#clickme、ハッシュを更新しようとはしません。コードがハッシュを更新することを期待していた場合は、次のように操作する必要があります。

$("#clickme").click(function(){
    window.location.hash='#secondclick';

    //Remaining Code
});
于 2011-10-24T19:19:56.787 に答える
0

ハッシュは更新されていますが、この場合、変数'p'は更新されていません。

ここに割り当てステートメント

var p=window.location.hash;

ページが読み込まれるときに1回だけ実行されます。したがって、ロード時にPの値は空であり、常に空になります。

それ以外の

alert(p)

試す

alert(window.location.hash)

または、クリックコールバック内で割り当てを移動します。つまり、アラートステートメントのすぐ上

于 2011-10-24T19:30:47.363 に答える