ATTR - html/JS - tudtátok ezt és ha igen mi a vélemény/tapasztalat ?
Hahó.
Kezdő progger vagyok, és felfedeztem, hogy megadhatok egy elemnek bármilyen attributumot, olyat ami nincs is a nyelvben.
pl. <img src="kep.jpg" milyenallat="hazi">
Ez eddigi tapasztalataim alapján nem okoz hibajelenséget.
Ráadásul jquery-vel le is lehet kérdezni mint attributumot.
Valamint röptében létre is lehet hozni ilyen 'attributumot' és odaadni valamilyen elemnek.
Ez arra volt jó nekem, hogy attributumként el tudtam tárolni, hogy egy adott
elemre kattintottak e már vagy sem. Esetleg hányszor.
Mit gondoltok ? Mit tudtok minderről ?
A kérdés NEM arra vonatkozik, hogy nincs e más megoldás.(Nyilván változók stb...)
Engem ez az attributumos dolog érdekel, mert ezzel sikerült állat egyszerűen megcsinálnom valamit, ami jól működik (eddig).
Tehát hogy valaki, tapasztalt e ezzel kapcsolatban valamit ?
■ Kezdő progger vagyok, és felfedeztem, hogy megadhatok egy elemnek bármilyen attributumot, olyat ami nincs is a nyelvben.
pl. <img src="kep.jpg" milyenallat="hazi">
Ez eddigi tapasztalataim alapján nem okoz hibajelenséget.
Ráadásul jquery-vel le is lehet kérdezni mint attributumot.
Valamint röptében létre is lehet hozni ilyen 'attributumot' és odaadni valamilyen elemnek.
Ez arra volt jó nekem, hogy attributumként el tudtam tárolni, hogy egy adott
elemre kattintottak e már vagy sem. Esetleg hányszor.
Mit gondoltok ? Mit tudtok minderről ?
A kérdés NEM arra vonatkozik, hogy nincs e más megoldás.(Nyilván változók stb...)
Engem ez az attributumos dolog érdekel, mert ezzel sikerült állat egyszerűen megcsinálnom valamit, ami jól működik (eddig).
Tehát hogy valaki, tapasztalt e ezzel kapcsolatban valamit ?
Attribútumok
A hivatalos válasz persze az lesz, hogy ilyet ne tégy, mert ha éppen olyan nevű attribútumot használsz, amit később fognak bevezetni, akkor a későbbi működést befolyásolhatod. Az már a te döntésed, hogy foglalkozol-e ezzel vagy sem. Szerintem nem kell vele törődni, mert a HTML ígyis túl van bonyolítva, jóval több terhet szeretnének rárakni, mint amire alkalmas, és amire ki lett találva.
Az egy dolog, hogy te mit
Mert nincs jelentősége.
Az igénytelenség nem ott
Amúgy én bírom a játékosan renegát hozzáállásodat, csak túl sokszor átcsap értelmetlen önfejűségbe. Ha már az ember használhat saját attribútumokat (data-), és megmaradhat a dokumentuma validitása is, akkor az önfejűségen kívül mi más viheti arra, hogy márpedig ő csakazértis invalid dokumentummal akar dolgozni? :)
Másrészt lehet, hogy számodra nincs jelentősége, ami nem is gond, ha egymagad fejlesztesz egy projektet egész életedben, amit soha senki más nem fog átvenni tőled, de az esetek többségében ez nem így van.
Nincs jelentősége annak, hogy
Miért ne lenne jelentősége?
Nem is beszélve az olvashatóságról és a közös nyelvről, ami szintén megkönnyíti a munkát. Hiba a fejlesztőnek úgy gondolkodni, hogy ha neki elég jó az a kód, akkor mindenki másnak is elég jó lesz.
A kérdésre válaszolva, természetesen átmegyek a piroson. Az analógia azonban nem stimmel.
Kézzel szoktam hibát
Nem használhatsz csak úgy
Viszont jó hír neked, hogy a HTML5-ben már vannak ún. data- attribútumok, amik megoldják a problémádat. Annyi a feladat, hogy a saját kitalált attribútum-neveid elé oda kell írnod, hogy data-.
A te esetedben:
$('img').data('milyenallat')
kóddal, a .data() metódus segítségével, illetve természetesen a .attr() metódussal is.Helyes
Attribútumok
1, Az ilyen adatok az oldal működéséhez szükségesek, aminek nem feltétlenül van köze a HTML kódhoz. Miért terheljük a HTML-t a megjelenítéshez nem feltétlenül kötődő elemekkel? (Separation of concerns)
2, Mi van akkor, ha szeretnéd összegyűjteni azokat az elemeket, amiken számolod a kattintásokat? Megkeresheted egy jQuery selectorral őket, ami nem feltétlenül a leggyorsabb folyamat (a DOM eleve minden szempontból lassú), vagy ha külön van választva a HTML és a működés, akkor csak elég mondjuk egy már létező tömbön végigiterálni.
Szerintem ami a legjobb, ha a HTML-ben csak az van, ami a megjelenéshez minimálisan szükséges, a működéshez szükséges és metaadatok pedig teljesen külön vannak választva, jelen esetben egy külön javascript blokkban.
A HTML5-ben a data- attribútumok bevezetése jelentősen rontja a weben tárolt adatok helyzetét, mert arra bátorít, hogy az adatokat keverd bele a HTML-be. Ez amiatt rossz, mert pont ellentétes a korábbi törekvésekkel, hogy válasszuk külön a dolgokat (az adatokat a megjelenítéstől: CSS, az adatok a működéstől: JS), valamint így jóval nehezebb egy oldalból információt kinyerni (mert az adatok egy része önkényesen elnevezett attribútumokban van).
Egyetértek azzal, hogy
Továbbra is azt kérdem (de utoljára, aztán feladom), ha már úgy dönt, hogy attribútumban tárol valamit, miért ne használná a data- attribútumokat?
De miért ne rakhatná a
Kicsit összezavarodtam, eddig
Szerintem mindent kihoztunk ebből, amit ki lehetett.
valid attribútumok.
ha ez izgat akkor használd a data-* attribútumokat :)
amúgy a validkodók figyelmébe ajánlanám pl az angular.js-t (bár itt többféleképp is lehet), vagy a rivets.js stb binding libraryket ;)
Én továbbra is csak azt nem
Validkodó, ez tetszik.
én pl
(api-* val pl jq pluginokat inicializálok/konfigolok monjuk egy domreadyből)
szóval itt is érvényes az a dolog, h nem összevissza nevezgetjük el a változókat hárombetűs izéknak, hanem valami rendszerben, h érthető/követhető legyen.
Köszönet és stb...
Cserébe elmondom mire jó ez a "saját" attribútum.
Többen azt hitték, hogy ezt beleírom a html-be, aztán a validátor stb....
Nem írom bele a html-be.
Ebben ez a mámor, hogy csak virtuálisan létezik.
JQuery-vel adom hozzá pl egy input mezőhöz, majd egy másik műveletben lekérdezem.
Gyakorlati példa, talán hasznos lehet másoknak is.
Felhasználói adatokat kérek be, input mezőkbe.
Az inputokhoz nem használok label-t és placeholdert mert így akarom.
Az input mezőbe irom usernek - deftext - hogy mit várok abba a mezőbe.
Ha user belekattint az inputba, JQ üríti. Ez eddig eccerű.
Ha nem ír bele semmmit és máshová kattint JQ visszateszi az eredeti - deftext -et.
Ez se nagy ügy.
De ha user belekattint és ír is bele valamit,
akkor annak ott kell maradnia, ha elkattint onnan, sőt,
ha újra belekattint hogy módosítsa se tűnhet el többé.
Ehhez volt jó nekem a maszek attribútum.
Itt van:
http://jsfiddle.net/Mikulasche/mqj7N/
Ez a jó link
http://jsfiddle.net/Mikulasche/4jV7N/1/
Ha dinamikusan rakod rá
Amúgy főleg a label azért nem árt, ha az akadálymentességgel is foglalkozni akarsz.
Ettől függetlenül csak így tovább, gyakorlásnak kiváló.