Autor | Zpráva | ||
---|---|---|---|
Simonik2 Profil * |
#1 · Zasláno: 27. 9. 2012, 09:35:28
Potřebuji udělat ve Fancyboxu vlastní navigaci, protože nemůžu použít funkci galerie.Chci přidat tlačítka třeba do titulku. . Hned při pokusech jsem narazil, že mi to hlásí, že funkce 'moje' není definována. Dá se to vyřešit?
<script> $(document).ready(function(){ function moje () { alert('Ahoj'); } $('a.fancybox').click(function() { $.fancybox({ href:"/kolobezky/akce/pok5/P1060406.jpg", autoSize: true, title: '<a href="javascript:moje();"> zpět</a>', closeClick : 'true' }); }); }); </script> |
||
preca1 Profil |
#2 · Zasláno: 27. 9. 2012, 10:53:25
Zdravim,
podle mě to je tim, že funkce moje je definovaná ve funkci obsluhující načtení DOMu, ale odkaz jí volá v rámci documentu (neboli volá window.moje()). Jinými slovy, když klikneš na odkaz tak ta funkce je schovaná a proto jí nemůže zavolat. Aby ses dozvěděl víc, přečti si něco o scope, česky něco jako rozsah platnosti (teď si nevzpomenu na lepší výraz).
jQuery neovládam, ale vyřešil bych to tak, že bych dynamicky vytvořil element a a na něj bych přidal posluchač události click.
Pseudokód: var aElement = new Element('a'); aElement. href = ''; aElement.setText(' zpět'); aElement.click(moje); ... // kód v $.fancybox() autoSize: true, title: aElement, // netušim, jestli de přidat element closeCLick: true ... Pokud tohle nebude fungovat, tak bych tomu odkazu dal id a posluchač události na něj přidal po vytvoření fancyboxu.
|
||
Kcko Profil |
#3 · Zasláno: 27. 9. 2012, 11:47:04
Simonik2:
Vyhod tu funkci z document ready a dej ji mimo, třeba pod to |
||
Časová prodleva: 5 dní
|
|||
Simonik2 Profil * |
#4 · Zasláno: 2. 10. 2012, 10:14:10
Pokročil jsem trochu dál, ale stále mi to nefunguje plně.
Já mám totiž galerii ze Zoneru ve formě FRAME, kterou vkládám do stránky pomocí iframe. (Takže je stránka,uvnitř iframe a uvnitř iframe pak FRAME) Když zavolám pouze stránku, která je obsahem FRAME, tak galerie funguje. Když ji zavolám z hlavní stránky, tak první fotka se zobrazí ve fancyboxu. Ale pak již nejde zavolat funkce moje - hlásí chybu, že funkce moje není definována. Přitom vlastně vnitřní funkce by měly vidět na vnější funkce. Tady je celý skript. <script> var d="d"; var p="p"; var index=0; var semafor=true; var moje_obrazek_celkem= $("#moje_obrazek_celkem").attr("muj_attr")*1; var moje_jpg_nazev=""; function moje (smer) { if (semafor) // pouze pi prvnm zobrazen fanceboxu. Pak u inkrementujeme počitadlo { var moje_obrazek_cislo = $("#moje_obrazek_cislo").attr("muj_attr"); index=moje_obrazek_cislo*1; } semafor=false; if (smer=="d") { index=index+1; if (index> moje_obrazek_celkem ) { index= moje_obrazek_celkem; } } if (smer=="p") { index=index-1; if (index < 1 ) { index= 1; } } moje_obrazek_cislo=index; moje_obrazek_cislo=moje_obrazek_cislo+""; // převedeme na řetězec // syntaxe ze Zoneru je, název souboru je 5-ti místný if(moje_obrazek_cislo.length ==1) { moje_obrazek_cislo="0000"+moje_obrazek_cislo; } if(moje_obrazek_cislo.length ==2) { moje_obrazek_cislo="000"+moje_obrazek_cislo; } if(moje_obrazek_cislo.length ==3) { moje_obrazek_cislo="00"+moje_obrazek_cislo; } if(moje_obrazek_cislo.length ==4) { moje_obrazek_cislo="0"+moje_obrazek_cislo; } moje_jpg_nazev=moje_obrazek_cislo+".jpg"; moje_jpg_nazev="/akce/pok6/publish/"+moje_jpg_nazev; var tit=""; window.parent.window.parent.$.fancybox({ href:moje_jpg_nazev, autoSize: true, title:'<a href="javascript:moje(p);"> Předchozí </a>' + tit+ '<a href="javascript:moje(d);"> Další </a>' }); } // konec funkce $(document).ready(function(){ $('a.fancybox').click(function() { // targer the parent window (same domain only) // then call fancybox in the parent semafor=true; window.parent.window.parent.$.fancybox({ href:"/akce/pok6/publish/00001.jpg", autoSize: true, title:'<a href="javascript:moje(d);"> Pokračuj </a>' }); }); }); </script> |
||
Simonik2 Profil * |
#5 · Zasláno: 2. 10. 2012, 18:04:10
Simonik2:
Tak jsem to vyřešil. Našel jsem pěkný materiál na : http://www.yaldex.com/javascript_tutorial_3/toc.html kde rámy a předávání proměnných jsou popsány v této kapitole : http://www.yaldex.com/javascript_tutorial_3/LiB0049.html Já jsem měl: if (index> moje_obrazek_celkem ) a mělo být : if (index> window.parent.parent.moje_obrazek_celkem ) Dobré je vypsat si pomocí window.parent.location.href , na co se vlastně odvoláváme. Díky všem za pomoc. |
||
Časová prodleva: 12 let
|
0