Autor | Zpráva | ||
---|---|---|---|
buddy Profil * |
#1 · Zasláno: 8. 4. 2009, 22:00:26
Zdarvím,
řeším tu takovou zapeklitost. Chci zobrazovat a skrývat více (celkový počet je neznámý) objektů na stránce pomocí funkce toggle v jQuery. Taky by si stránky měly poslední stav pamatovat. Začal jsem nejdřív s jedním prvkem a to šlo bez problémů: <style> .hidden {display: none;} </style> <script type="text/javascript"> $(document).ready(function(){ var kolacek = $.cookie('show'); if (kolacek == 'block') { $("#show").show(); $("#show").removeClass("hidden"); }; $("#show_link").click(function(){ if ($("#show").is(":visible")) { $.cookie('show', 'none'); } else { $.cookie('show', 'block'); } $("#show").slideToggle("500"); return false; }); }); </script> <a href="#show" id="show_link">Zobraz</a> <div id="show" class="hidden"> TEST </div> Je to sesmolený na rychlo, ale snad je to ok. Funguje to v pohodě. Problém je, že když budu chtít takto skrývat a zobrazovat víc prvků, tak nevím, jak postupovat. Normálně bych to řešil asi přes onclick(i), kde i by bylo číslo za id zobrazované části... Takže onclick(1) by zobrazovalo show_1 a podobně... U jQuery nevím jak na to. Důležitý je, aby to fungovalo s cookies a aby to dokázalo takhle zobrazovat "nekonečnej" počet prvků. Nenapadá vás něco, neřešili jste někdy něco podobného? Tohle je moje první "dílo" v jQuery, dřív jsem si všecko psal sám a zatím se tak nějak rozkoukávám... :) |
||
buddy Profil * |
#2 · Zasláno: 9. 4. 2009, 10:13:56
Tak jsem trošku pošpekuloval a došel jsem na řešení, které mi zobrazuje více divů:
<script type="text/javascript"> $(document).ready(function(){ $('[class^=toggle-cont]').hide(); $('[class^=show]').click(function() { var $this = $(this); var x = $this.attr("className"); if ($('.toggle-cont' + x).is(":visible")) { $.cookie(x, 'none'); } else { $.cookie(x, 'block'); } $('.toggle-cont-' + x).toggle(500); return false; }); }); </script> <a href="#show_menu1" class="show_menu1">Zobraz 1</a> <div class="toggle-cont-show_menu1"> TEST 1 </div> <a href="#show_menu2" class="show_menu2">Zobraz 2</a> <div class="toggle-cont-show_menu2"> TEST 2 </div> Teď do toho ještě zabudovat ty kolacky a je to. Akorát teď nevím, jak na ně. Jestli přes nějakej cykl projet všechny cookies začínající show_ nebo tak něco. Ono by se to dalo jednoduše řešit i přes php, prostě tam nacpat výsledek toho cookie, ale to mi nepřijde moc elegantní a radši bych to měl jen v JS... Jdu experimentovat dál, ale kdyby měl někdo nápad, určitě budu rád.. |
||
buddy Profil * |
#3 · Zasláno: 9. 4. 2009, 13:57:02
Hehe, jsem trubka. Já to řešení v podstatě vymyslel už v tom druhým příspěvku, stačilo ho jen trochu přespat na cookies a bylo hotovo. Kdyby někdo řešil něco podobnýho, nechť je mu k dispozici následující řešení (možná existuje něco jednoduššího a lepšího, ale já na nic nenarazil a to moje je myslím ok):
<script type="text/javascript"> $(document).ready(function(){ $('[class^=toggle-cont]').hide(); $('[class^=show]').each(function (i) { var $this = $(this); var y = $this.attr("className"); var kolacek = $.cookie(y); if (kolacek == 'block') { $('.toggle-cont-' + y).show(); }; }); $('[class^=show]').click(function() { var $this = $(this); var x = $this.attr("className"); if ($('.toggle-cont-' + x).is(":visible")) { $.cookie(x, 'none'); } else { $.cookie(x, 'block'); } $('.toggle-cont-' + x).toggle(700); return false; }); }); </script> <a href="#show_menu1" class="show_menu1">Zobraz 1</a> <div class="toggle-cont-show_menu1"> TEST 1 </div> <a href="#show_menu2" class="show_menu2">Zobraz 2</a> <div class="toggle-cont-show_menu2"> TEST 2 </div> Ještě si s tím doma pohraju a poladím to, ale důležitý je, že se zadařilo. No nic, tak jsem si tu zakonverzoval sám se sebou a je na čase vrátit se do práce... |
||
kahi Profil |
#4 · Zasláno: 9. 4. 2009, 14:35:55
Sice to už máš vyřešené, ale pro zajímavost, řešil jsem to samé takto (a je tam ještě prostor ke zlepšení).
|
||
buddy Profil * |
#5 · Zasláno: 9. 4. 2009, 15:16:11
kahi
Jojo, na tohle jsem narazil a chvilku jsem si s tím hrál, nakonec jsem ale potřeboval, aby trošku něco jinýho a tak jsem vypotil to svoje. Bude se to ještě dost měnit, aby to vyhovovalo tomu, k čemu to bude sloužit... Každopádně díky za radu. Mimochodem jsem narazil na ještě jeden zajímavej skript... pro moje účely sice nepoužitelný, ale jinak určitě stojí za okouknutí: Tady... |
||
kahi Profil |
#6 · Zasláno: 9. 4. 2009, 20:29:43
„Mimochodem jsem narazil na ještě jeden zajímavej skript... pro moje účely sice nepoužitelný, ale jinak určitě stojí za okouknutí: Tady...“
Dá se v tom inspirovat, díky! |
||
Časová prodleva: 15 let
|
0