Autor | Zpráva | ||
---|---|---|---|
Dukolm Profil * |
#1 · Zasláno: 8. 10. 2011, 18:04:39
mam tuhle JS funkci:
function autoHeight(ta) { ta.style.overflowY = "hidden"; // vypnu vertikální posuvník, aby nerušil ta.onkeyup = ta.onkeydown = ta.onkeypress = ta.onchange = function() { this.style.height = 0; // donutím <textareu>, aby si spočítala správně scrollHeight this.style.height = this.scrollHeight + 0 + "px"; // čtyřka je součet okrajů + paddingu }; ta.onchange(); } A a používám ji z jquery timhle $("textarea").keyup(function(e) { autoHeight(e.target); }); Jen se mi nedaří nijak upravit Jquery část tak aby se to provedlo i po načtení stránky |
||
Dukolm Profil * |
#2 · Zasláno: 8. 10. 2011, 18:13:40
Ještě teda taková maličkost tech Textarer mám v tý stránce víc
|
||
Časová prodleva: 9 dní
|
|||
Chamurappi Profil |
#3 · Zasláno: 17. 10. 2011, 10:56:22
Reaguji na Dukolma:
„se mi nedaří nijak upravit Jquery část tak aby se to provedlo i po načtení stránky“ Uvedený kód nevypadá, že by se snažil o cokoliv v okamžiku načtení stránky. Stačí dát před konec <body> skript, který zavolá autoHeight na každou <textarea> , ne?
|
||
Dukolm Profil * |
#4 · Zasláno: 17. 10. 2011, 23:07:22
Chamurappi:
problém je v tom že právě $("textarea") autoHeight(textarea) |
||
Kcko Profil |
#5 · Zasláno: 18. 10. 2011, 00:15:17
Řešení: http://jquery.jslab.net/zkousecka/#199c9e757de71682dd187422bad75b5f
Ta tvoje funkce by šla určitě lépe napsat jako plugin do jQuery. |
||
_es Profil |
#6 · Zasláno: 18. 10. 2011, 01:13:33 · Upravil/a: _es
Kcko:
„Ta tvoje funkce by šla určitě lépe napsat jako plugin do jQuery.“ Ten celý skript by sa dal úplne jednoducho napísať aj bez jQuery. Dukolm: „Jen se mi nedaří nijak upravit Jquery část“ Asi preto, že je tam tá „jQuery časť“ dosť nadbytočná, jQuery je len jedna funkcia, nie programovací jazyk, treba sa ti naučiť JavaScript. function autoHeight() { Tu daj kód na to automatické nastavenie textarey dostupnej pod this. } var t = document.getElementsByTagName("textarea"); //opravené ([#10]) for (var i = 0, o; i < t.length; i++) { o = t[i]; o.onkeyup = o.onkeydown = o.onkeypress = o.onchange = o.onclick = autoHeight; } Samozrejme, treba ten skript spustiť vtedy, keď už príslušné textarey existujú. |
||
Kcko Profil |
#7 · Zasláno: 18. 10. 2011, 01:23:43 · Upravil/a: Kcko
_es:
Ten celý skript by sa dal úplne jednoducho napísať aj bez jQuery. Vím, a Země se přestane točit když to bude cez jQuery? >:o |
||
Chamurappi Profil |
#8 · Zasláno: 18. 10. 2011, 03:19:42 · Upravil/a: Chamurappi
Reaguji na Dukolma:
„potřebuji nějak projít to pole a jednu po druhé“ Nastuduj si cykly. Bez použití té brzdy světové rotace by to mělo jít nějak takhle: var i = 0, textarey = document.getElementsByTagName("textarea"); while(textarey[i]) autoHeight(textarey[i++]); Reaguji na Kcka: „Ta tvoje funkce by šla určitě lépe napsat jako plugin do jQuery.“ Ona je to spíš moje funkce. Nešla :-) |
||
_es Profil |
#9 · Zasláno: 18. 10. 2011, 07:32:33 · Upravil/a: _es
Chamurappi:
„by to mělo jít nějak takhle:“ Ono je aj tá funkcia v [#1] celkovo divná, lepšie upraviť aj tú, okrem toho je zbytočne pre každú textareu vytváraná extra bezmenná funkcia. |
||
Chamurappi Profil |
#10 · Zasláno: 18. 10. 2011, 08:22:05
Reaguji na _es:
„To je nejaký nový príkaz?“ Rasistická smyčka určená pouze pro bílé elementy <textarea> :-)
Děkuji za upozornění. Tvůj kód v [#6] zkouší volat getElementsByTagName na window , což selže.
„je zbytočne pre každú textareu vytváraná extra bezmenná funkcia“ Pravda. Když už řešíme tu výkonnost, tak v [#6] je zase zbytečné zjišťovat opakovaně length na živé kolekci elementů.
|
||
_es Profil |
#11 · Zasláno: 18. 10. 2011, 08:56:18
Chamurappi:
Išlo mi aj o názornosť kódu. Efektívnejšie je počítať „odzadu“, cyklus while je síce kratší a efektívnejší no menej prehľadný a vyžaduje viac pochopenia.
„Když už řešíme tu výkonnost“ O tú ide hlavne po detekcii udalostí, no cyklus by sa dal ešte výkonovo vylepšiť aj zachytením chyby pri priradení udalosti, teda netreba v cykle testovať nič. |
||
Kcko Profil |
#12 · Zasláno: 18. 10. 2011, 11:53:13
Chamurappi:
Ona je to spíš moje funkce. Nešla :-) No takto jak je napsána, samozřejmě ne, ale já bych si jí tak napsal ;-) a opuštím tento topic než zase zabředneme do věčných debat nativní JS vs JS knihovny / frameworky Pa děti. |
||
Časová prodleva: 13 let
|
0