Hirdetés
- gban: Ingyen kellene, de tegnapra
- D1Rect: Nagy "hülyétkapokazapróktól" topik
- Parci: Milyen mosógépet vegyek?
- Brogyi: CTEK akkumulátor töltő és másolatai
- sziku69: Fűzzük össze a szavakat :)
- Luck Dragon: Asszociációs játék. :)
- MaxxDamage: Vizes Laptop Hűtés? Lehetséges? Igen!
- sziku69: Szólánc.
- sh4d0w: Én és a számítógép
- ubyegon2: Airfryer XL XXL forrólevegős sütő gyakorlati tanácsok, ötletek, receptek
Új hozzászólás Aktív témák
-
Sk8erPeter
nagyúr
válasz
TonTomika #835 üzenetére
Karma és martonx tök jól leírták a lényeget - többek közt amit én is nagyon hangsúlyoznék: ne gányolj, és soha többé ne használj ilyen semmitmondó fos változóneveket, mert normális fejlesztőnek az ilyentől széjjelnyílik az agya, aztán szíve szerint utolsó leheletéig ütné azt, aki ilyet csinált.
Még valami:
van ez a kódrészleted:
$("body div#nav ul ul#szolgaltatasok")
Mivel itt egyedi azonosítók tartoznak ezekhez a DOM-elemekhez, tökéletesen felesleges ilyen rohadt hosszú selectort írni. Elég ennyi:
$("ul#szolgaltatasok")
vagy akár az ul-t is lehagyhatod, bár ez még nem árthat, mert legalább egyértelművé teszi, hogy itt egy listáról van szó.
Ezenkívül egy kissé általánosabban kéne megírnod a kódjaidat, nem "bedrótozni" az egyes menüelemekhez tartozó viselkedést. De asszem hasonlót már leírt Karma is. A lényeg, hogy tényleg legyenek class-aid, és azok megléte vagy nem léte szerint viselkedjenek az elemek."A feladat, hogy mindegyik aktuális menüpont ahol éppen jár az ember highlightolva legyen."
Ezt gyorsan felejtsd el, hogy ilyen window.location.pathname-hez hasonló hülyeségekkel szívatod magadat, feltételezem, itt egy NEM AJAX-szal legenerálódó menüről van szó - az aktív menüpontot jelző class-t normális esetben szerveroldali nyelvvel (pl. PHP-vel) szokták belegenerálni az adott menüpontba.
Tehát ha mondjuk van egy <ul> listád, akkor pl. a "rolunk" oldalon van egy "active" (vagy épp "highlighted" class, mint ez:
<ul>
<li><a href="/XYZ">XYZ</a></li>
<li class="highlighted"><a href="/rolunk">Rólunk</a></li>
....
</ul>Remélem érthető így.
Ami még fontos, és amire martonx is célzott: a lenyíló menük problémáját már előtted megoldották mások, úgy, hogy agyontesztelték mindenféle böngészőben, úgyhogy tényleg ne most találd fel a spanyolviaszt.
Ajánlott plugin lenyíló menüs macerára: Superfish.
jQuery-alapú, egyszerű, faszányos. -
Karma
félisten
válasz
TonTomika #835 üzenetére
Végre egy kis élet a topikban.
Hát, az első gondolatom az volt a sorok olvasása közben, hogy téged is elkapott a Not Invented Here (NIH) szindróma - azaz inkább megírod puszta kézzel azt, amire a CMS-eket már mióta feltalálták. Egy kicsit remélem, hogy ez valami ujjgyakorlat, és nem egy valódi vevőnek szánt valódi oldal.
Ömleszteném inkább a további gondolataimat, sok mindenre benne lesz a válasz:
1) Változónevek! $-ral hagyományosan a jQuery által bewrappelt objektumokat szokás jelölni, a sima stringekhez nem annyira pálya. Másrészt nem kell spórolni a betűkkel, az "$a", "$c" és egyéb szutykolás helyett rendes, beszédes neveket használj, és akkor talán olvasható marad a kód két nap múlva is. Nekünk meg azonnal.
BASIC programozó voltál ezelőtt?
2) Ez a rész:
if($c == $a) {
$("body div#nav ul li#1 a").css('color', '#494949');
}Nem csak a c és a olvashatatlan változók miatt rossz. Nem illik (más szóval elítélendő baromság) a JS kódba beleraknod a konkrét CSS stíluselemeket, használj egy új classt hozzá; a színt meg a külső CSS fájlodban definiáld ehhez a classhoz.
Eztán használd az addClass(), removeClass(), toggleClass() jQuery függvények megfelelőjét a kiemeléshez.
3) Nem nehéz elérni, hogy az azonos szinten lévő többi elem becsukódjon, csak használnod kéne a HTML-ben a classokat a különböző szintek csoportosításához.
Pl.:
$(".main-menu-item.submenu").click(function() {
var $item = $(this);
$item.slideDown(0.1).siblings(".submenu").slideUp(0.1);
});Nem teszteltem, csak ideírtam fejből.
4) Dinamikus változók... Minden dinamikus a JavaScriptben bizonyos szempontból. A DOM fa bármikor változhat, ezért lehet a jQuery segítségével megadott feltételek alapján keresni. Például az aktuális menüelemnek adsz egy "highlighted" nevű classt (lásd 2. pont), akkor a $(".highlighted") selector visszaadja ezt az elemet, bármikor.
Ugye hogy értelmetlen közvetlenül a színeket állítgatni?
5) Egyébként mondogatod ezt a dinamikus jelzőt, de használható infó nem jött át.
Mikor is történik ez a DB elérés? Az oldal generálásakor a PHP (vagy más backend) végzi el, így a lejövő oldal igazából statikus; vagy AJAX hívásokkal töltöd le a menüelemeket az oldal betöltődése után? (Utóbbi esetben: miért?)
Egyáltalán ha rákattintasz egy linkre, akkor az újratölti az oldalt? Vagy új ablak? iframe? Vagy sikerült framesetet használni 2012-ben? (Brrrrrrrrr)
Ezek a kérdések elég fontosak, mert más megoldási lehetőségeket lehet az esetekben csinálni...
6) Egyébként ha tényleg dinamikus, akkor az .on() függvény segítségével tudsz eseménykezelőket rendelni a HTML elemek egy csoportjához - már előre, azelőtt, hogy ténylegesen létrejöttek volna. Nagy királyság. De nem biztos, hogy neked ez tényleg kell...
Szóval összegezve az biztos, hogy meg kellene barátkoznod a HTML-ben classok fogalmával, és sürgetőlegesen alkalmaznod a problémára.
Új hozzászólás Aktív témák
- Azonnali készpénzes INTEL CPU NVIDIA VGA számítógép felvásárlás személyesen / postával korrekt áron
- BESZÁMÍTÁS! Lenovo Legion Go S 32GB/1TB kézikonzol garanciával hibátlan működéssel
- Bomba Ár! Fujitsu Celsius H710 - i7-2720QM I 4GB I 250GB I Nvidia I 15,6" FHD I Cam I W10 I Gari!
- ÁRGARANCIA! Épített KomPhone i5 13400F 16/32/64GB RAM RTX 5060 8GB GAMER PC termékbeszámítással
- ÁRGARANCIA!Épített KomPhone Ryzen 5 7600X 32/64GB RAM RTX 5060 Ti 16GB GAMER PC termékbeszámítással
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest