2011-10-24 1 views
5

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

しかし、私はこのハッシュを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」が追加されています。しかし、私が「Then click me」divをクリックすると、空のアラートが表示されます。ハッシュが「更新」していないようです。

私はこの点について大きな助けになります。

答えて

5

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

$(function(){ 
    $("#clickme").click(function(){ 
     var p=window.location.hash; 
     alert(p) 
    }); 
}); 
+0

こんにちは、うまくいきました。皆さんの(収束した)回答に感謝します。 –

0

#clickme divの関数は、決してハッシュを更新しようとしません。

<script type="text/javascript"> 
    $(function(){ 
     $("#clickme").click(function(){ 
      var p=window.location.hash; 
      alert(p) 
     }); 
    }); 
</script> 
1

:あなたはハッシュを更新するようにコードを期待していた場合は、次のようにそれを操作する必要があります変数 'p'が更新されていない場合ここで代入文

var p=window.location.hash; 

は一度だけ、ページがロードされたときに実行されます。したがって、ロード時にPの値は空になり、常に空になります。

代わりの

alert(p) 

alert(window.location.hash) 

またはクリックコールバック内の割り当てを移動してみてください。つまり警告文のすぐ上にあります。

0

はハッシュがupadatedなっているが、これには:あなたのクリックリスナー内var p=window.location.hash;を入れてみてください

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

    //Remaining Code 
}); 
関連する問題