| 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: 17 let
|
|||
0