Programovacie jazyky, rady, poradňa...
fikotek
King
Príspevky: 1618 Registrovaný: 21 dec 2004, 16:13
Bydlisko: Zamilovany :-)
Kontaktovať používateľa:
Príspevok
od používateľa fikotek » 09 aug 2015, 22:48
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>
fikotek
King
Príspevky: 1618 Registrovaný: 21 dec 2004, 16:13
Bydlisko: Zamilovany :-)
Kontaktovať používateľa:
Príspevok
od používateľa fikotek » 10 aug 2015, 10:17
Nerozumim co znamena "vice versa"?
audiotrack
VIP
Príspevky: 25958 Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:
Príspevok
od používateľa audiotrack » 10 aug 2015, 10:27
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
Príspevky: 1618 Registrovaný: 21 dec 2004, 16:13
Bydlisko: Zamilovany :-)
Kontaktovať používateľa:
Príspevok
od používateľa fikotek » 12 aug 2015, 10:59
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>