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