2013-02-20 17 views
22

Pracuję nad prostą aplikacją, która jest oparta na jednej stronie (ze względu na ograniczenia projektu) i ma zawartość dynamiczną. Rozumiem, że zawartość dynamiczna jest w porządku, ale nie rozumiem, jak skonfigurować skrypt, który zmienia kod HTML o div, gdy zmienia się wartość skrótu w adresie URL.Wykryj zmianę wartości mieszania adresu URL przy użyciu JavaScript

muszę skrypt JavaScript, który działa jako takie:

URL: http://foo.com/foo.html div treść: <h1>Hello World</h1>

URL: http://foo.com/foo.html#foo div zawartość tematyczna: <h1>Foo</h1>

Jak to będzie działać?

Proszę pomóc! Dzięki.

+0

Zapraszamy do obejrzenia [Sammy] (https://github.com/quirkey/sammy). –

+0

@Bradchristie ok, zajrzę, ale najlepiej chcę uniknąć używania wtyczek dużo ... czy to możliwe tylko z jQuery? – user115422

+0

Spójrzmy na to realistycznie. Albo poświęcisz dodatkowy czas na pisanie czegoś, co robi to, co robi biblioteka, albo po prostu korzystasz z biblioteki i idziesz dalej. Używasz już jQuery (biblioteki), ponieważ prawdopodobnie chcesz elastyczności i nie musisz pisać samemu. Plus sammy pozwala wstawić symbole zastępcze i szablon przychodzącego skrótu (bardzo elastyczny) –

Odpowiedz

62

Można słuchać przypadku hashchange:

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

ok, to może wydawać się głupie pytanie, ale robi to idę na końcu ciała lub w głowę, bo zawsze się mylę pod tym względem? – user115422

+0

włączam to po 'jquery' –

+0

@RPM tak w głowę? Dzięki :) – user115422

5

osobiście użyję sammy co daje elastyczność w szablonie hashtag (dodaj zastępcze i być w stanie odczytać je z powrotem). na przykład

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

Przykład można znaleźć tutaj: http://jsfiddle.net/KZknm/1/

+0

próbowałem. ' 'ale skrypt nie robi nic ostrzegania przy zmianie hashtag .. – user115422

+0

@fermionoid: To łania nie działaj w ten sposób. Musisz powiązać zmiany z 'this.get (...);' –

+0

@fermionoid: zobacz przykład, który dodałem do mojej zaktualizowanej odpowiedzi. –

Powiązane problemy