Autor | Zpráva | ||
---|---|---|---|
T-fon Profil |
#1 · Zasláno: 31. 3. 2012, 19:31:31
Dobrý den, chtěl bych vás poprosit o pomoc s úpravou jQuery rozbalovacího menu. Přiznám se, že vzhledem k tomu, že se nyní učím hlavně PHP a MySQL, tak mi na JQuery nezbývá čas a proto jsem jen našel a obšlehnul kód, který jsem si přidal do stránek:
$(document).ready(function () { $(".navigace ul li").bind("mouseenter", function() { $(this).children("ul").css("top", "30").slideDown("slow"); }); $(".navigace ul li").bind("mouseleave", function() { $(this).children("ul").stop(true, true).slideUp("slow"); }); }); .navigace ul li ul { display: none} var stranka = "<?php echo substr($_GET['page'],0,6) ?>"; if (stranka=="výlety") { $(".navigace ul li ul").css("display":"block") } Já doufám, že se z tohoto textu dá pochopit, o co mi jde a předem děkuji za jakoukoliv radu a pomoc. |
||
hexcross Profil |
#2 · Zasláno: 1. 4. 2012, 12:20:20
Pokud tedy jde o to že chceš udělat aby to menu zůstalo rozbalené, bude určitě lepší to vyřešit přes PHP než přes JavaScript.
V PHP to ověříš tak že porovnáš aktuální obsah proměnné $_GET['page'] s aktuální položkou které potom přidáš nějakou classu (třeba open - tímto vyřešíš označení aktuálně otevřené položky ale nikoliv to rozbalení.
U "rozbalení" budeš postupovat podobně - u nadřazené položky menu vytvoříš buď podmínky nebo ideálně jednu funkci která by ti měla ověřit toto zda aktuální položka je aktivní a zároveň součástí toho rodičovského prvku :) Počítám že to menu máš uložené v DB... |
||
T-fon Profil |
#3 · Zasláno: 2. 4. 2012, 11:47:08
Upřímě řečeno z toho vůbec nejsem moudrý. Menu nemám uložené v DB, je to normální seznam napsaný v HTML. Ja myslím že vím, jak bych pomocí PHP udělal 2 menu (jedno rozbalené, druhé ne), ale vůbec netuším, jak bych to pak propojil s tou funkcí jQuery (s tim efektem rozbalování). Protože v tomhle případě bych pak ten javascrip musel dát stejně do nějaké podmínky, aby se vykonal jen v případě, že nebudu v sekci výlety...
|
||
hexcross Profil |
#4 · Zasláno: 2. 4. 2012, 13:02:22
Ok tak to mění situaci :) pokud by jsi si to tahal z DB bylo by lepší to ověřovat přes PHP.
Takhle ti stačí přidat jednu podmínku která najde prvek co má ID aktivní (v tvém případě odkaz) a najde nadřazené ULko kterému dá vlastnost display:block takže takto :
if($("#aktivni").length!=0){ $("#aktivni").parent().parent().css("display","block"); } |
||
T-fon Profil |
#5 · Zasláno: 2. 4. 2012, 13:29:08
Děkuji, částečně to funguje, umístil jsem to na stránky, problém je ovšem v tom, že když kliknu na položku výlety20xx a z menu sjedu myší, tak se asi aktivuje ta funkce "mouseleave" a menu se zaroluje. Při opětovém načtení stránky už to vypadá přesně jak bych chtěl. Dalo by se ještě toto nějak vyřešit?
|
||
hexcross Profil |
#6 · Zasláno: 3. 4. 2012, 10:59:04
Zkus tohle, ale bude to funkční jenom pokud tam budeš mít jedno výsuvný menu. V případě víc menu by bylo lepší to předělat na toggle. Není to žádná sláva ale funguje to :)
if($("#aktivni").length){ $("#aktivni").parent().parent().css("display","block"); } else{ $(".navigace ul li").bind("mouseenter", function() { $(this).children("ul").slideDown("slow"); }); $(".navigace ul li").bind("mouseleave", function() { $(this).children("ul").slideUp("slow"); }); } |
||
T-fon Profil |
#7 · Zasláno: 3. 4. 2012, 13:16:22
paráda, tohle funguje přesně jak má, díky moc
|
||
Chamurappi Profil |
#8 · Zasláno: 3. 4. 2012, 13:32:45
Reaguji na T-fona:
Nastavovat ten display: block skriptem je hloupost, proč ho nenastavíš v CSS?
Jak se dostanu do podmenu s vypnutým JavaScriptem? |
||
hexcross Profil |
#9 · Zasláno: 3. 4. 2012, 13:50:01
Chamurappi:
Nedostaneš :D bez JavaScriptu to je nepoužitelný a bez použití PHP zase nereálný. |
||
_es Profil |
#10 · Zasláno: 3. 4. 2012, 14:02:06
hexcross:
„bez JavaScriptu to je nepoužitelný“ Zrejme si nepochopil, že [#8] je rada na odstránenie tejto chyby. „bez použití PHP zase nereálný“ Návštevníkovi je predsa jedno, ako server vyrobí dáta. |
||
hexcross Profil |
_es:
Pochopil, ale z tohodle vlákna vyplívá že struktura menu je vytvořena staticky a bez dalších hodnot určujících co je rodič a co není (teda přes nějakou PHP + mySQL) strukturu menu to je nemožné. Aspoň tak jsem to pochopil teda.. Edit: Vlastně plácám hlouposti, stačilo by u aktivní položky odchytit přes PHP zda se hodnota z $_GET[page] shoduje s tou toho prvku a pak tomu <li> přiřadit patřičnou classu. Pak by to šlo vyřešit přes CSS.
|
||
_es Profil |
#12 · Zasláno: 3. 4. 2012, 14:56:34
hexcross:
„to je nemožné“ Čo je nemožné? Aby sa návštevníkom bez JS podmenu zobrazilo „napevno“ a návštevníkom s JS až po vyžiadaní cez myš? |
||
hexcross Profil |
#13 · Zasláno: 3. 4. 2012, 15:21:12
_es:
Viz. edit, jasně že to jde :) |
||
Časová prodleva: 4 dny
|
|||
T-fon Profil |
#14 · Zasláno: 7. 4. 2012, 13:40:25
_es:
„Aby sa návštevníkom bez JS podmenu zobrazilo ‚napevno‘ a návštevníkom s JS až po vyžiadaní cez myš?“ to znamená, že bych měl mít někde nějakou podmínku, kde by se zjistilo, jestli návštěvník nemá zakázané JS? můžete mi prosím poradit konkretněji? |
||
Časová prodleva: 3 dny
|
|||
_es Profil |
#15 · Zasláno: 10. 4. 2012, 09:29:10
T-fon:
„to znamená, že bych měl mít někde nějakou podmínku, kde by se zjistilo, jestli návštěvník nemá zakázané JS?“ Buď použiješ značku noscript, alebo JS nejako zabezpečí, že bude menu schované. |
||
T-fon Profil |
#16 · Zasláno: 11. 4. 2012, 11:23:49
_es:
„Buď použiješ značku noscript“ no ale tam se píše, že IE jí ignoruje, i když ma vypnuté JS, kdežto Mozila jí provede. Takže bych mel mít asi display: block v CSS a pomocí JS to nějak schovat, že? Jsem v JS úplný začátačník, šlo by to tedy udělat tak, že bych použil ten script od hexcrosse a jen před tu první podmínku napsal: $("#aktivni").parent().parent().css("display","none");
|
||
Časová prodleva: 11 dní
|
|||
T-fon Profil |
#17 · Zasláno: 22. 4. 2012, 22:10:06
Tak bohužel se mi stále nepodařilo vyřešit, jak schovat menu se zapnutým javascriptem a naopak. Přes značku noscript to nefunguje a v JS jsem vymýšlel různé příkazy, ale nepovedlo se. Nebyl by tu někdo ochotný poradit?
|
||
Časová prodleva: 12 let
|
0