2013-02-20 12 views
22

Tek sayfa tabanlı (proje kısıtlamaları nedeniyle) ve dinamik içeriğe sahip basit bir uygulama üzerinde çalışıyorum. Dinamik içeriği iyi anlıyorum ama anlamadığım şey, URL'deki karma değeri değiştiğinde div'un html'sini değiştiren bir komut dosyasının nasıl ayarlanacağıdır. JavaScript kullanarak URL'nin karma değerindeki değişikliği saptayın

ben gibi çalışmak için bir JavaScript komut dosyası gerekir:

URL: http://foo.com/foo.html div içeriği: <h1>Hello World</h1>

URL: http://foo.com/foo.html#foo div içeriği: <h1>Foo</h1>

Bu nasıl iş ki?

Lütfen yardım edin! Teşekkürler.

+0

http://jsfiddle.net/KZknm/1/ [sammy] (https://github.com/quirkey/sammy) göz at. –

+0

@Bradchristie Tamam, bir göz atacağım ama ideal olarak eklentileri kullanmaktan kaçınmak istiyorum ... sadece jQuery ile mümkün mü? – user115422

+0

Buna gerçekçi bir bakalım. Ya da bir kütüphanenin yaptığı şeyi yapan bir şey yazmak için ek zaman harcıyorsunuz ya da sadece kütüphaneyi kullanıyorsunuz ve devam edersiniz. JQuery'yi (kitaplık) zaten kullanıyorsunuz çünkü esnekliği istiyor ve kendiniz yazmak zorunda değilsiniz. Artı sammy yer tutucuları eklemek ve şablon gelen gelen (çok esnek) –

cevap

62

Sen hashchange olay dinleyebilirsiniz:

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

Tamam, bu aptalca bir soru gibi görünebilir ama 'kafasında bu yüzden – user115422

+0

dahil? teşekkürler :) –

+0

@RPM jquery' sonra bu hep bu konuda karışık çünkü vücudun sonunda veya baş gitmek? – user115422

5

şahsen, sana hashtag şablon (tutucuların ve onları geri okumak mümkün) esnekliğini kazandıracaktır sammy kullanmayı tercih ediyorum. Örneğin.

<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> 

bir örnek

burada bulunabilir:

+0

yanı bir Açısal denetleyici içinde çalışır, eklentisi kullanarak bana bir örnek gösterebilir i denedim: ' 'ama hashtag değiştirdiğinizde komut şey uyarmak doesnt .. – user115422

+0

@fermionoid: It doe Bu şekilde çalışmıyor. This.get (...); –

+0

@fermionoid ile yapılan değişikliklere bağlanmanız gerekiyor: güncellenmiş yanıtıma eklediğim örneğe bakın. –

İlgili konular