Autor | Zpráva | ||
---|---|---|---|
midlan Profil |
#1 · Zasláno: 21. 5. 2011, 11:58:25 · Upravil/a: midlan
Ahoj,
potřeboval bych na stránce udělat klikání pomocí klávesnice. Mám na stránce abecedu odkazů: <a href="a">a</a> <a href="b">b</a> atd. a potřebji aby když uživatel zmáčkne na klávesnici písmeno a, aby se na něj kliklo tzn. provedla se jquery fce: $("a").click(mojeprikazy...) |
||
pcmanik Profil |
#2 · Zasláno: 21. 5. 2011, 12:06:51 · Upravil/a: pcmanik
Hladaj keycode - totizto kazda klavesa ma svoje cislo a ty budes tymto eventom priradovat. Napr A je 65, b 66 atd...
Resp. jQuery ma na toto udalost |
||
midlan Profil |
#3 · Zasláno: 21. 5. 2011, 16:38:54 · Upravil/a: midlan
no dobře, ale jak z jquery to číslo klávesy dostanu?
$(document).keydown(function() { alert("test"); }); |
||
Keeehi Profil |
#4 · Zasláno: 21. 5. 2011, 16:44:02
midlan:
Tak se znovu podívej na tu stránku, kterou ti pcmanik odkázal a dole máš příklad použití. |
||
cesilek Profil |
#5 · Zasláno: 21. 5. 2011, 16:45:07
Nějak takhle ;)
$(document).bind('keyup', function (e) { var key = e.keyCode || e.which; if (key === 13 ) alert ("Stisknutý enter"); }); |
||
midlan Profil |
#6 · Zasláno: 21. 5. 2011, 16:46:00
Keeehi:
co na tom nechápu je tohle: <script type="text/javascript" src="/scripts/events.js"></script> |
||
Keeehi Profil |
#7 · Zasláno: 21. 5. 2011, 16:55:40
midlan:
Myslím, že to můžeš vynechat. Nevím, proč to tam mají, ale sami ho nepoužili. |
||
pcmanik Profil |
#8 · Zasláno: 21. 5. 2011, 17:27:05
midlan:
To nic neznamena, a kod od cesilek-a by som radsej nepouzil, vznikali by ti s tym len problemy, a berie si to zbytocne viac pamete. |
||
Witiko Profil |
#9 · Zasláno: 21. 5. 2011, 17:58:46 · Upravil/a: Witiko
pcmanik:
„vznikali by ti s tym len problemy, a berie si to zbytocne viac pamete“ Mohl bys to rozvést? Až na použití eventu keyup místo keydown nevidím nic závadného (předpokládám, že rozdíly mezi event modelem Internet exploreru a ostatních prohlížečů jQuery metoda bind abstraktizuje) ? |
||
pcmanik Profil |
#10 · Zasláno: 21. 5. 2011, 18:09:46
Witiko:
Metoda bind sa chova inak ako ostatne metody jQuery, Resp nwm cim je to, ale vsade sa pise ze je proste lepsie pouzivat priamo metody a nie bind, ak sa da tomu vyhnut. |
||
midlan Profil |
#11 · Zasláno: 21. 5. 2011, 18:28:11
Tak jsem to uz konecne pochopil, byl jsem zmatenej z ze tam byl linknutej event.js a pak se se ten objekt taky jmenoval event. Myslel jsem ze ten objekt ma nejakou zavislost na tom event.js.
vyresil jsem to takto: var abeceda = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"]; $(document).ready(function() { $(document).keydown(function(klavesa) { if(((klavesa.keyCode-65)>=0)&&((klavesa.keyCode-65)<abeceda.length)) { pismeno = abeceda[klavesa.keyCode-65]; $("#message").html(pismeno); } }); }); slo mi o to dostat pismeno do promeny, funguje to jenom na pismena co jsou v array dekuji za pomoc :) |
||
Witiko Profil |
#12 · Zasláno: 21. 5. 2011, 19:02:47 · Upravil/a: Witiko
midlan:
Ještě si můžeš vedle abecedy uložit délku toho pole, aby se nemusela neustále zjišťovat přes abeceda.length. Stejně tak bych si pro pěknost kódu klavesa.keyCode - 65 na začátku funkce hodil do nějaké proměnné. Ale to jsou už jen mikrooptimalizace. :) pcmanik: Podíval jsem se do zdrojového kódu jQuery a funkce JQuery.blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave mají ve svém těle následující: return arguments.length > 0 ? this.bind( name, data, fn ) : this.trigger( name ); |
||
midlan Profil |
#13 · Zasláno: 21. 5. 2011, 20:34:23 · Upravil/a: midlan
Witiko:
tak to už jsou optimalizace pro oči. V praxi to myslím chodí tak že čim víc proměnných, tím více program zabírá RAM ne? Proto jich používám jen nutné množství. Teď jsem se ale zasekl u další věci. Je možné použít slektor v jquery takto: $("#pismena a[href="+pismeno+"]") |
||
Witiko Profil |
#14 · Zasláno: 21. 5. 2011, 20:48:27 · Upravil/a: Witiko
midlan:
„V praxi to myslím chodí tak že čim víc proměnných, tím více program zabírá RAM ne?“ Jistě, ale myslím, že uložení jednoho 32bajtového čísla je oproti počítání velikosti pole při každém kliknutí výhodnější. :-) Navíc zaobírání se RAM se bere u vyšších programovacích jazyků za kontraproduktivní a většinou není její monitorování a přímá interakce s ní ani umožněna. Ve chvíli, kdy se vynoří problémy s nedostatkem RAM, by měl člověk zauvažovat o napsání svého výtvoru v nízkoúrovnovějším, kompilovaném jazyce. A nebo zkusit přestat ukládat textové řetězce do polí, jež jsou vyplněny dalšími poli o velikosti 8 - 32 (uvažujme Unicode) buněk, v nichž jsou ve dvojkové soustavě uloženy jednotlivé bity ve formě číslic zabírajících 32 bajtů. Tím chci říct, že javascript je tak otevřený jazyk, že není problém psát něco zcela neefektivně. :-) function Řetězec(text) { if(!(this instanceof Řetězec)) return new Řetězec(text); var data = [], pointer = 0, length = text.length; do data.push(Znak(text[pointer])); while(++pointer !== length) this.stringify = function() { var string = [], pointer = 0; do string.push(data[pointer].stringify()); while(++pointer !== length) return string.join(""); }; }; function Znak(znak) { if(!(this instanceof Znak)) return new Znak(znak); var data = [], bits = znak.charCodeAt(0).toString(2), pointer = 0, length = bits.length; do data.push(bits[pointer]); while(++pointer !== length) this.stringify = function() { return String.fromCharCode(parseInt(data.join(""), 2)); }; }; var textBible = Řetězec($("#kniha").text()); // Sbohem volná RAM. Vítej mezi námi, swapovací soubore. „Je možné použít slektor v jquery takto“ Selektory v jQuery jsou pouhou simulací CSS selektorů. Co ti zbaští CSS, zbaští ti i jQuery. V daném výrazu máš chybu, href je třeba obalit apostrofy: $("#pismena a[href=\"" + pismeno + "\"]") |
||
midlan Profil |
#15 · Zasláno: 21. 5. 2011, 21:06:56 · Upravil/a: midlan
Witiko:
„href je třeba obalit apostrofy“ kam je mám dát? V tom případě je divné že: $("a[href=about]").click(); Potřebuji hodnotu href v selektoru doplnit z proměnné... |
||
Witiko Profil |
#16 · Zasláno: 21. 5. 2011, 21:16:43 · Upravil/a: Witiko
midlan:
Máš v předchozím příspěvku řešení. „V tom případě je divné že“ Divného na tom není nic, znaky jako tečka způsobí, že parser rozřeže výraz špatně. |
||
midlan Profil |
#17 · Zasláno: 21. 5. 2011, 21:19:16 · Upravil/a: midlan
Witiko:
žádná změna, pořád nejde :( edit: ale řekl bych že to bude spíš strukturou kódu, když jsem to měl v $("a").click(tady) a měl tam $(this) tak to běhalo... |
||
Witiko Profil |
#18 · Zasláno: 21. 5. 2011, 21:34:40
midlan:
$("#pismena a[href=\"" + pismeno + "\"]") |
||
midlan Profil |
#19 · Zasláno: 21. 5. 2011, 21:50:02 · Upravil/a: midlan
Witiko:
nn nebudu :D dělám v PSPadu a ten vužívá jádro IE7-v něm to nešlo :D takže už snad dám pokoj, protože už to mám v podstatě hotový :) |
||
Časová prodleva: 13 let
|
0