Autor | Zpráva | ||
---|---|---|---|
xciza Profil |
#1 · Zasláno: 11. 12. 2013, 16:28:25
Ahoj,
na webu pomocí php generuju v cyklu elementy s id a pomocí js nektere schovam a po kliknuti na jeden element je chci zobrazit. problem je v tom ze když v js napisu toto: $(document).ready(function() { for (i = 0; i < 10; i++){ $("#forum-text-" + i).hide(); $("#forum-title-" + i).click(function() { $("#forum-text-" +i).slideToggle(); }); } }); kdyz tam ale nedam forcyklus a misto "i" dám na pevno čísla tak to jede. Nevíte proč v prvním případě to jde a u druhého ne? |
||
Chamurappi Profil |
#2 · Zasláno: 11. 12. 2013, 16:31:17
Reaguji na xcizu:
„Nevíte proč v prvním případě to jde a u druhého ne?“ Hodnota i je v době kliknutí dávno 10 .
Viz Lexikální uzávěr. |
||
xciza Profil |
#3 · Zasláno: 11. 12. 2013, 16:38:34
Ale ta hodnota by se měla navisit o jedna az po projdutí celeho cyklu ne?
|
||
Chamurappi Profil |
#4 · Zasláno: 11. 12. 2013, 16:44:21
Reaguji na xcizu:
Což se i děje. Myslíš, že by se s jejím navýšením mělo čekat až na to kliknutí? Tak to nefunguje. Nastavíš zpracování události a jede se hned dál … a až někdy za sto let na tu věc člověk klikne, to už i není, co bývalo za mlada, to už je 10 .
|
||
xciza Profil |
Jo takhle. tak to chapu. Ale nejak se me ten uzaver nedari rozchodit.
EDIT: nevim jestli jsem to pochopil spravne ale staci za for cyklus pridat (i) EDIT2: tak nevim jestli to mám správně ale už mě to funguje. Mohu jen poprosit o zkontrolovani: for( var i = 1; i< 10; i++){ (function(i){ $(document).ready(function() { $("#forum-text-" + i).hide(); $("#forum-title-" + i).click(function() { $("#forum-text-" + i).slideToggle(); }); }); })(i); } diky |
||
Kubo2 Profil |
#6 · Zasláno: 11. 12. 2013, 18:50:01
xciza:
; i< 10;
Desiaty text ( #forum-text-10 ) sa ti neskryje. Musíš to zapísať takto:
for(var i = 1; i <= 10; ++i) { ... } |
||
anonymní Profil * |
#7 · Zasláno: 11. 12. 2013, 19:49:33
xciza:
neee. Takhle určitě ne. Měj jen jedno .ready , když už ho k životu utně potřebuješ.
Šlo by to udělat třeba takto: <style> .js .hide {display: none} </style> <body> <script> document.body.className = 'js'; </script> <div class=hide onclick='show(this)'>...</div> <div class=hide onclick='show(this)'>...</div> <div class=hide onclick='show(this)'>...</div> <div class=hide onclick='show(this)'>...</div> <script> function show(el) {...} // pokud chces nutne jQuery reseni, tak ho prilinkujes o radek vyse a: function show(el) { el.slideToggle(); } </script> |
||
Časová prodleva: 10 let
|
0