2013-02-20 9 views
22

私は単一ページベース(プロジェクトの制限のため)で動的コンテンツを持つ単純なアプリケーションを開発中です。私は動的コンテンツを理解しますが、私が理解していないのは、URLのハッシュ値が変更されたときにdivのhtmlを変更するスクリプトを設定する方法です。JavaScriptを使用したURLのハッシュ値の変更を検出しました。

私は、次のような動作するようにJavaScriptのスクリプトが必要になります。

URL:http://foo.com/foo.html divの内容:<h1>Hello World</h1>

URL:http://foo.com/foo.html#foo divの内容:<h1>Foo</h1>

どのようにこの作品は、でしょうか?

助けてください!ありがとう。

+0

は[サミー](https://github.com/quirkey/sammy)を見てください。 –

+0

@Bradchristie大丈夫、見ていますが理想的にはプラグインの使用を避けたいです... jQueryだけでも可能ですか? – user115422

+0

それを現実的に見てみましょう。あなたは、図書館が何をするかを書いている時間を過ごすか、図書館を使って移動します。 jQuery(ライブラリ)を使用しているのは、おそらく柔軟性が求められ、自分で書く必要がないからです。プラスサミーはプレースホルダーを挿入し、入ってくるハッシュをテンプレート化することができます(非常にフレキシブル) –

答えて

62

あなたはhashchangeイベントに耳を傾けることができます。

$(window).on('hashchange',function(){ 
    $('h1').text(location.hash.slice(1)); 
}); 
+0

これは愚かな質問のようです私はいつもこの点で混乱しているので、これは体の最後か頭部に行くのですか? – user115422

+0

'jquery'の後にそれを含めます –

+0

@RPMそうですね?ありがとう:) – user115422

5

個人的に、私はあなたにハッシュタグをテンプレート(プレースホルダを追加し、それらを読み返すことができるよう)するための柔軟性を与えるsammyを使用すると思います。例えば

<script src="/path/to/jquery.js"></script> 
<script src="/path/to/sammy.js"></script> 
<script> 
    $(function(){ 
     // Use sammy to detect hash changes 
     $.sammy(function(){ 
      // bind to #:page where :page can be some value 
      // we're expecting and can be retrieved with this.params 
      this.get('#:page',function(){ 
       // load some page using ajax in to an simple container 
       $('#container').load('/partial/'+this.params['page']+'.html'); 
      }); 
     }).run(); 
    }); 
</script> 

<a href="#foo">Load foo.html</a> 
<a href="#bar">Load bar.html</a> 

の例では、ここで見つけることができます:http://jsfiddle.net/KZknm/1/

+0

私が試してみた: ' 'しかし、私は、ハッシュタグを変更すると、スクリプトが何かを警告doesntの.. 。 – user115422

+0

@fermionoid:それはdoeそうはいかない。 'this.get(...); 'を使って変更にバインドする必要があります –

+0

@fermionoid:私が更新された答えに含まれている例を見てください。 –

関連する問題