Jquery, hash pri nacteni URL a pri kliknuti

Programovacie jazyky, rady, poradňa...
fikotek
King
King
Používateľov profilový obrázok
Príspevky: 1618
Registrovaný: 21 dec 2004, 16:13
Bydlisko: Zamilovany :-)
Kontaktovať používateľa:

Jquery, hash pri nacteni URL a pri kliknuti

Príspevok od používateľa fikotek »

Ahojte,

Kdyz kliknu na odkaz tak se mi prida class active spravne jak na polozku v menu tak i na content. Ale kdyz skopiruju URL a odkaz si otevru v novem okne tak mi nezustane aktivni spravny odkaz ani content. Jak to udelat na click a zaroven i na nejaky window load?

Kód: Vybrať všetko

<script type="text/javascript">
    $(document).ready(function(){

        $('.side-menu li a').click(function(){

          window.location.hash = $(this).attr("href");
          var hash = window.location.hash.substring(1);

          $('.side-menu li a').each(function(){
            $(this).removeClass('active');
            $('.side-menu').find('a.' + hash).addClass('active');
          });

          $('.main-content .item').each(function(){
            $(this).removeClass('active');
            $('.main-content').find('#' + hash).addClass('active');
          });

          return false;
        });

    });
</script>
Boccaccio
Medium Professional
Medium Professional
Používateľov profilový obrázok
Príspevky: 1097
Registrovaný: 01 mar 2014, 14:00
Bydlisko: Bratislava

Re: Jquery, hash pri nacteni URL a pri kliknuti

Príspevok od používateľa Boccaccio »

location.hash sa da pouzit aj "vice versa"
http://stackoverflow.com/questions/1822 ... -in-jquery
fikotek
King
King
Používateľov profilový obrázok
Príspevky: 1618
Registrovaný: 21 dec 2004, 16:13
Bydlisko: Zamilovany :-)
Kontaktovať používateľa:

Re: Jquery, hash pri nacteni URL a pri kliknuti

Príspevok od používateľa fikotek »

Nerozumim co znamena "vice versa"?
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Re: Jquery, hash pri nacteni URL a pri kliknuti

Príspevok od používateľa audiotrack »

vice versa znamená že to funguje aj opačným smerom. Tak ako si vieš ten hash nastaviť kliknutím na nejaký element, vieš si ho aj prečítať a zareagovať naň pri načítaní stránky. Dokonca vieš odchytiť aj jeho zmenu (lebo prepísanie hashu nespraví reload stránky)

Kód: Vybrať všetko

$(window).on('hashchange', function() {
  //.. work ..
});
fikotek
King
King
Používateľov profilový obrázok
Príspevky: 1618
Registrovaný: 21 dec 2004, 16:13
Bydlisko: Zamilovany :-)
Kontaktovať používateľa:

Re: Jquery, hash pri nacteni URL a pri kliknuti

Príspevok od používateľa fikotek »

nakonec jsem to vyresil podle tohohle:
http://benalman.com/code/projects/jquer ... ashchange/

Navic jsem tam pridal akorat if ktery mi zapina/vypina obsahovy kontent v zavislosti na tom hashi.

Kód: Vybrať všetko

<script type="text/javascript" src="/js/hashchange.js"></script>
<script type="text/javascript">
$(function(){

  // Bind an event to window.onhashchange that, when the hash changes, gets the
  // hash and adds the class "selected" to any matching nav link.
  $(window).hashchange( function(){
    var hash = location.hash;
    var hash2 = location.hash.substring(1);

    $('.side-menu a').each(function(){
      var that = $(this);
      that[ that.attr( 'href' ) === hash ? 'addClass' : 'removeClass' ]( 'active' );
    });

    $('.main-content .item').each(function(){
      var that = $(this);
      that[ that.attr( 'id' ) === hash2 ? 'addClass' : 'removeClass' ]( 'active' );
    });

    if ($('.main-content .item').hasClass('active')) {
      $('.main-content > img').css('display','none');
    }
    else {
      $('.main-content > img').css('display','block');
    }

  });


  $(window).hashchange();

});
</script>
Napísať odpoveď