Autor | Zpráva | ||
---|---|---|---|
ybznek Profil |
#1 · Zasláno: 15. 6. 2011, 18:07:36 · Upravil/a: ybznek
ahoj, potřebuju nastavit akce,.. k jednotlivým tlačítkům, tlačítko by mělo obsahovat informace [id_vlastnosti,pocet] jak mám rozpoznat tlačítka od sebe/nastavit identifikátory chci to asi takhle $(".tlacitka").mouseover(function(){ alert( $(this).count + 'x' + $(this).idProperty); }); v Chrome(možná i jinde) to funguje třeba <button statCount="3" class="shop_button">3</button> $(".shop_button").click(function(){ alert($(this).attr("statCount")); }); ale přijde mi to jako nevalidní Jaké by bylo správné řešení? |
||
Witiko Profil |
#2 · Zasláno: 15. 6. 2011, 20:27:49 · Upravil/a: Witiko
ybznek:
„ale přijde mi to jako nevalidní“ Osobně na tom nevidím nic nevalidního. Pokud člověku jde o oddělení scriptu a dat, pak se jedná o překvapivě čisté řešení. |
||
ybznek Profil |
#3 · Zasláno: 15. 6. 2011, 22:22:29
Witiko:
myslím, že se do html nedaj cpát jen tak nějaké atributy... |
||
Kcko Profil |
#4 · Zasláno: 15. 6. 2011, 22:24:27
ybznek:
Nedají. Používám spojené identifikátory například do třídy <img src="pic.jpg" id="atribut1_atribut2_atribut_3" /> snadno rozparsujes a použiješ. |
||
Witiko Profil |
#5 · Zasláno: 15. 6. 2011, 22:50:07 · Upravil/a: Witiko
Kcko, ybznek:
„myslím, že se do html nedaj cpát jen tak nějaké atributy“ Můžu poprosit o živou ukázku? :-) |
||
Chamurappi Profil |
#6 · Zasláno: 15. 6. 2011, 23:36:50 · Upravil/a: Chamurappi
Reaguji na ybznka:
„myslím, že se do html nedaj cpát jen tak nějaké atributy“ Proč by ne? Jen si musíš dát pozor, aby byly opravdu tvé, tzn. vyhnout se konfliktním pojmenováním, která by už mohla mít nějaký nativní význam v některém z prohlížečů. V XML by šlo využít jmenné prostory, ale HTML není XML. „ale přijde mi to jako nevalidní“ Z hlediska jazyka HTML to validní není. Takže ti validátor řekne „tady máš nějaký neznámý atribut“ a ty si řekneš „není neznámý, ten je můj!“ … a tím to hasne. |
||
ybznek Profil |
#7 · Zasláno: 16. 6. 2011, 08:42:30
Kcko:
To je dobré, ale bez znalosti reg. výrazů to musím vždycky parsovat znak po znaku a taky nevím, jak by to bylo ve výsledku s rychlostí to mít u více elementů Witiko: tak všechno jde, ale jde o to, zda to je/není správné Chamurappi: teď mi to je jedno, ale třeba kdybych dělal portfolio o sobě a psal, že tvořím validní kód a někdo by se podíval do validátoru a vyskočilo by na něho několik chyb... HTML5 má prý atributy jako data-moje-promenna="moje-moje-hodnota" ale pro momentální html standard mi přijde asi nejlepší volba od Kcko Děkuji za pomoc |
||
_es Profil |
#8 · Zasláno: 16. 6. 2011, 08:49:56
ybznek:
> HTML5 má prý atributy jako > data-moje-promenna="moje-moje-hodnota" > ale pro momentální html standard mi přijde asi nejlepší volba od Kcko No tak to môžeš validovať aj ako HTML5. |
||
joe Profil |
#9 · Zasláno: 16. 6. 2011, 09:01:14
ybznek:
„data-moje-promenna="moje-moje-hodnota"“ Asi nejlepší způsob |
||
Str4wberry Profil |
#10 · Zasláno: 16. 6. 2011, 09:16:46
„ale bez znalosti reg. výrazů to musím vždycky parsovat znak po znaku a taky nevím“
Ne, stačí ti pouhý split . Nicméně taktéž souhlasím, že je lepší použít ty vlastní atributy.
|
||
shaggy Profil |
#11 · Zasláno: 16. 6. 2011, 09:40:57
ybznek:
> HTML5 má prý atributy jako > > 1 > > data-moje-promenna="moje-moje-hodnota" A keďže používaš jQuery, tak by si k týmto atribútom mohol pristupovať aj cez $(selector).data("moje-promenna") prípadne $(selector).data("mojePromenna") podľa toho, ktorú verziu používaš. Uvádzam to len pre úplnosť, akékoľvek riešenie bude OK. |
||
Kcko Profil |
#12 · Zasláno: 16. 6. 2011, 10:50:40
ybznek:
Nepotřebuješ parsovat znak po znaku. Jednotlivé "dynamické" atributy nebo identifikatory oddělíš vlastním separátorem, třeba podtržítkem a pak je rozdělíš do pole pomocí metody split tj var elementy = $("element").attr("id").split("_"); A je to. |
||
Witiko Profil |
#13 · Zasláno: 16. 6. 2011, 11:10:42 · Upravil/a: Witiko
Kcko, ybznek:
Myslím, že to s tou nevaliditou přeháníte. Stejně tak je nevalidní v prohlížečích nepodporujících nové HTML5 tagy a atributy dané tagy a atributy používat, ačkoliv ve skutečnosti jsou k tomu autoři vybízeni a prohlížeč neznámý tag / atribut ignoruje. Navrhované řešení je sice funkční, ale validní tedy rozhodně není, jelikož element se stejným id by se měl na stránce objevit jen jednou:
<!doctype html> <html> <head> <title>Aaa</title> <meta charset = "utf-8"> </head><body> <span id="aaa"></span> <span id="aaa"></span> </body> </html> Validation Output: 1 Error Line 8, Column 15: Duplicate ID aaa. Navíc to rozhodně není sémantické, protože cpát datové pole do identifikátoru je prostě prasárna, nezlobte se na mě. :-) I pakliže uložíte dané pole do jiného existujícího atributu ( class - ještě zábavnější, prohlížeč se bude snažit najít css třídu), stejně dojdete k problému modularity. Tzn. pokud budete chtít vytvořit více knihoven, které budou zacházet s elementy na základě html atributu, každá bude muset parsovat dané pole, což by vůbec nemuselo být nutné.
Abych to shrnul, myslím, že si zbytečně hážete klacky pod nohy. :-) |
||
Kcko Profil |
#14 · Zasláno: 16. 6. 2011, 11:21:29 · Upravil/a: Kcko
Witiko:
Mě nejde o validitu. Ja teda tohle cpu vždycky do parametru rel S vlastním parametrem si nejsem jistý, jak by se na to tvářily prohlížeče (myslím to tak, že pokud si udělám vlastní parametr např. <input type="text" name="neco" price="50USD" /> tak aby to bylo možné zachytit alert($("input").attr("price")); Já na validitu kašlu, nemám ani jeden web validní, pro mě je důležité aby se weby zobrazovaly dobře a né aby mi validátor cpal, že mi někde chybí zapomenutý alt atp. Nemám to ozkoušené, bude fungovat smyšlený atribut a jeho zachycení všude? Navrhované řešení je sice funkční, ale validní tedy rozhodně není, jelikož element se stejným id by se měl na stránce objevit jen jednou: To u mě nikdy ale přeci nikdy nenastane. |
||
Chamurappi Profil |
#15 · Zasláno: 16. 6. 2011, 11:34:31
Reaguji na Witika:
„prohlížeč neznámý tag / atribut ignoruje“ To není přesné. Ignoruje syntaktický balast, ale neignoruje právoplatné části DOMu. Elementy i atributy v dokumentu jsou, jen nemají žádnou nativní funkci, takže se nijak neprojevují. Což je naprosto legitimní zákonitost, která zařizuje dopřednou kompatibilitu HTML a toleranci k rozšířením (jak ze strany tvůrců prohlížečů, tak ze strany tvůrců stránek). Reaguji na Kcka: „Ja teda tohle cpu vždycky do parametru rel“ To je také prasárna. Atribut rel vyjadřuje vztah odkazující stránky k odkázané. Tedy měl by. Kvůli blbě napsaným skriptům, které se bojí vymyslet si vlastní atribut, je tenhle jeho účel v praxi zlikvidovaný, nejde ho brát vážně.
„S vlastním parametrem si nejsem jistý, jak by se na to tvářily prohlížeče“ Úplně normálně. Není důvod, aby se tvářily jinak. Jednak by jim případný problém musel někdo výslovně naprogramovat, jednak by tím porušily specifikaci. „bude fungovat smyšlený atribut a jeho zachycení všude?“ Počínaje Explorerem 4. Možná i 3, teď přesně nevím, která verze začala podporovat getAttribute . Bude fungovat všude, kde je podpora getAttribute (čili v jazyku tvého kmene attr ).
|
||
Kcko Profil |
#16 · Zasláno: 16. 6. 2011, 11:41:09
Chamurappi:
Díky za objasnění, vzhůru do světa vlastních atributů. |
||
ybznek Profil |
#17 · Zasláno: 17. 6. 2011, 08:33:21
Díky za objasnění :)
|
||
Časová prodleva: 1 měsíc
|
|||
Witiko Profil |
#18 · Zasláno: 25. 7. 2011, 00:53:56 · Upravil/a: Witiko
Mimochodem - specifikace HTML5 zmiňuje vlastní atributy s tím, že je stačí prefixnout předponou
data- . Sice je jasné, že to funguje už nyní, a že přikývnutí od konzorcia je spíše symbolické, ale přesto jsem si myslel, že by to některým z vás mohlo ulehčit dilema z (ne)validity. :-)
Navíc je fajn mít jakžtakovou jistotu, že daný prefix nebude použitý. Přidávání vlastních atributů je jako rozšiřování prototypů vestavěných objektů v javascriptu - člověk si nikdy nemůže být 100% jistý, že nepřepisuje nějakou budoucí funkci / atribut. Zvláště potom, činí-li tak v jazyce anglickém. |
||
Časová prodleva: 13 let
|
0