Autor | Zpráva | ||
---|---|---|---|
Flek Profil |
#1 · Zasláno: 26. 6. 2011, 21:59:59
Dobrý den,
řeším takový menší problém s knihovnou jQuery. Mám stránky a na něm více stejnojmenných prvků: <div class='video'> <div class='schovano'>Schovaná data</div> <div class='zobrazeno'>Video 1</div> </div> <div class='video'> <div class='schovano'>Schovaná data</div> <div class='zobrazeno'>Video 2</div> </div> a tak dále.. a já potřebuji, aby při najetí na třídu "video" se skryla třída "zobrazeno" a objevila se třída "schovano", vím jak to udělat s jednojmennou třídou. Ale už nevím jak to udělat, pokud se na stránce nachází více DIVů se stejným názvem třídy. Pokud by mě někdo mohl nasměrovat, budu mu vděčný. |
||
Sir Tom Profil |
#2 · Zasláno: 26. 6. 2011, 22:10:56
Flek:
Tohle obyčejně řeším tak, že danému elementu přidám jedinečnou třídu, kterou žádný další nemá. $(".video").hover( function{ $(this).addClass("selected"); $(".selected .zobrazeno").hide(); $(".selected .schovano").show(); }, function{ $(".selected .zobrazeno").show(); $(".selected .schovano").hide(); $(this).removeClass("selected"); } ); Doufám, že mě, Chamurappi, nezabiješ, že zde používám opět jQuery kód. :) Nezlob se. :) |
||
Flek Profil |
#3 · Zasláno: 26. 6. 2011, 22:18:30
Sir Tom:
Děkuji, to mi bohatě stačí :). |
||
Chamurappi Profil |
#4 · Zasláno: 26. 6. 2011, 22:35:25 · Upravil/a: Chamurappi
Reaguji na Sira Toma:
„Doufám, že mě, Chamurappi, nezabiješ, že zde používám opět jQuery kód.“ Dotaz přímo žádal jQuery kód, takže tě zabiju jen za to, že doporučuješ naprosto praštěné řešení. Proč ne takhle? $(".video").hover( function(){ $(this).find(".zobrazeno").hide(); $(this).find(".schovano").show(); }, function(){ $(this).find(".zobrazeno").show(); $(this).find(".schovano").hide(); } ); find , šlo by to napsat bez prasáren.
Witiko ↓: Opraveno, díky za upozornění. |
||
Witiko Profil |
#5 · Zasláno: 27. 6. 2011, 14:35:37 · Upravil/a: Witiko
Chamurappi, Sir Tom:
Nechybí vám náhodou oběma za tím klíčovým slovem function nefousaté závorky? :-)
|
||
pcmanik Profil |
#6 · Zasláno: 27. 6. 2011, 14:38:56
Witiko:
nechybaju |
||
Witiko Profil |
#7 · Zasláno: 27. 6. 2011, 14:48:06 · Upravil/a: Witiko
pcmanik:
Tak to jsem asi blázen, protože tohle: (function{alert("test");})(); Vím, že nové verze Javascriptu se specifickými rozšířeními typu E4X (které pokud vím implementuje jen Mozilla, Rhyno, Actionscript atd. - na webových stránkách kvůli syntaktickým změnám reálně nevyužitelné) obsahovaly kromě takových vymyšliček, jakými jsou klíčová slova let a yield pro přehlednější práci s algoritmy či for each ... in pro iterování přes hodnoty objektu i možnost zkrácení zápisu funkce. Šlo však nicméně, co já vím, pouze o vypuštění bloku v případech, kdy se tělo funkce skládá z jednoho výrazu, tzn.:function a() b(); místo function a() {b();} . Možnost vypuštění kulatých závorek u funkcí bez argumentů by byla vítanější změnou, nicméně takovou možnost jsem nikde ECMA navrhovat neviděl.
|
||
pcmanik Profil |
#8 · Zasláno: 27. 6. 2011, 15:10:25
Witiko:
Nezabudaj, ze jQuery sa nesnazi byt Javascriptom :D Proste to tam netreba, hod ockom na dokumentaciu. V cistom JS mas, ale skutocne pravdu. |
||
Witiko Profil |
#9 · Zasláno: 27. 6. 2011, 15:12:46 · Upravil/a: Witiko
pcmanik:
To bych se vskutku velice divil. Runtime volání metody hover s blábolem v argumentu neprovede a vyhodí SyntaxError jQuery nejQuery.
EDIT: jQuery zkoušečka od ah01 se mnou souhlasí. |
||
Chamurappi Profil |
#10 · Zasláno: 27. 6. 2011, 16:00:46
Reaguji na pcmanika:
„Nezabudaj, ze jQuery sa nesnazi byt Javascriptom :D“ Ale navždy jím bude, nemůžou změnit syntaxi. „hod ockom na dokumentaciu“ Kam přesně? |
||
Flek Profil |
#11 · Zasláno: 27. 6. 2011, 16:17:40
Chamurappi:
Děkuji, nakonec jsem to vyřešil podle Tebe. |
||
pcmanik Profil |
#12 · Zasláno: 27. 6. 2011, 17:27:30
Chamurappi, Witiko:
Moja chyba, zle som pochopil Witiko-ovu poznamku o zatvorkach, myslel som ze hovori o inych, za vzniknuty flame sa ospravedlnujem. |
||
Witiko Profil |
#13 · Zasláno: 27. 6. 2011, 20:36:38
pcmanik:
Žádný flame, zajímalo by mě, jaké závorky jsi měl na mysli. |
||
pcmanik Profil |
#14 · Zasláno: 27. 6. 2011, 21:00:53 · Upravil/a: pcmanik
Witiko:
function(){( $(this).find(".zobrazeno").show(); $(this).find(".schovano").hide(); )} Neviem preco, ale prislo mi, ze myslis tieto. |
||
Witiko Profil |
#15 · Zasláno: 27. 6. 2011, 21:45:07 · Upravil/a: Witiko
pcmanik:
Uvědomuješ si, že tenhle zápis také jak v jQuery, tak ve vanilla javascriptu nedává sebemenší smysl a skončí opět SyntaxError em?
|
||
joe Profil |
#16 · Zasláno: 27. 6. 2011, 21:46:04
Chamurappi:
„doporučuješ naprosto praštěné řešení.“ Praštěné řešení jsou obě dvě :-) Když pominu to, že to celé jde udělat jednoduše v CSS, tak to jde udělat i jednodušeji v JS. $(".video").hover( function(){ $(this).addClass('hover'); }, function(){ $(this).removeClass('hover'); } ); a v CSS pak definovat: .video .zobrazeno { display: block; } .video .schovano { display: none; } .hover .zobrazeno { display: none; } .hover .schovano { display: block; } |
||
Witiko Profil |
#17 · Zasláno: 27. 6. 2011, 21:51:53 · Upravil/a: Witiko
joe:
To je praktické, avšak silně nesémantické (čti prasečí) řešení, protože zcela popírá pojmenování tříd zobrazeno a schovano . :-)
|
||
pcmanik Profil |
#18 · Zasláno: 27. 6. 2011, 21:54:41
Witiko:
Ano uvedomujem si to, neviem co ma to dnes chyta, nic sa mi nedari, vsetko sa kazi... Ale to uz je nieco ine.... |
||
joe Profil |
#19 · Zasláno: 27. 6. 2011, 22:02:16
Witiko:
To ale není můj problém, já jen používal vložený kód. Použil bych jiné názvy :) |
||
Witiko Profil |
#20 · Zasláno: 27. 6. 2011, 22:18:55
joe:
Fair enough, jedná se o relativně pěkné a čisté řešení. :-) |
||
Časová prodleva: 13 let
|
0