- sh4d0w: Vigyázz a háttértáradra...
- sziku69: Fűzzük össze a szavakat :)
- Luck Dragon: Asszociációs játék. :)
- LordAthis: AI Kérdés érkezett - 3600 soros Spagetti kód refaktorálása és budget
- Geri Bátyó: Agglegénykonyha – bevezető - igényfelmérés
- Lalikiraly: Astra kalandok @ Harmadik rész
- Geri Bátyó: Agglegénykonyha 1 – rizseshús másképp
- bambano: Bambanő háza tája
- sziku69: Szólánc.
- Gurulunk, WAZE?!
Új hozzászólás Aktív témák
-
biker
nagyúr
válasz
Sk8erPeter #2999 üzenetére
Köszi!
Amúgy ide másolom az ezt a verziót megelőző verzióra írt válaszom elejét a T. fejlesztők részére
Üdvözletem
Megnéztem…
Általában, mikor azt látom, hogy hosszas késés után rákérdezve hirtelen kapok egy “teszt verziót”, hogy semmi nem történt eddig, és gyorsan össze lett dobva valami. Ez egy előítélet, sajnos azonban megint igaz lettÉrtem, amiket írsz, de a jelzett problémáknál sokkal több gond van jelenleg ezzel a teszt verzióval.
És itt folytattam, akkor nem lőttem mellé sokkal.
A benne lévő dolgok, amiket írsz, teljesen érthetők, szerintem a kollégának azért sikerült így, és nekem azért nem tűnt zavarónak pl a w=694 és társai, mert egyértelműen kötött designba készítette, ahol 694px a slider box mérete. És hát ezek szerint nem sikerült rugalmasra készíteni
(erre tutti azt mondaná amúgy, hogy "nem volt követelmény"...)
Amúgy hogyhogy nálad a jQuery teljesen kimaradt? Úgy tudom, webfejlesztés a munkád.
Nem ez a főállásom, és nem is "weblapos" vagyok, aki egész nap weblapokat gyárt "húszezeré' megcsinálom" verzióban. Az csak a nagyon uborkaszezonban, de akkor is inkább készen megveszem 50USD-ért themeforesten.
Én egyedi alkalmazásokat fejlesztek inkább weben használható kivitelben, hogy a T. usernek ne legyen gépfüggősége. beléptető/tagnyilvántartó rendszer, crm rendszer, most épp egy szexhirdetős oldalt annak minden szépségével és gondjával,vés hasonlók. De ezeknél a legkevesebb a kinézet, a csicsa, az adattartalom a lényeg...
Így a jquery inkább átírás, testreszabás szinten használt, nulláról nem nagyon szeretek írni, mert minek, ha van 75.345.234 script készen? De sosem szerettem meg különösebben. -
Sk8erPeter
nagyúr
"és sajnos annyira nem vagyok jquery imádó, hogy azt lássam, mitől hányadék a kód"
Nem értem igazán, hogy mi rajta a tudomány, ha bármilyen nyelvben szereztél már tapasztalatot, gyors átgörgetés után kapásból látható, hogy ez spagettikód. Már azokból a dolgokból is, amiket martonx előttem leírt.
Amúgy hogyhogy nálad a jQuery teljesen kimaradt? Úgy tudom, webfejlesztés a munkád.Késő van, úgyhogy nincs energiám összeszedni minden potenciális szempontot, de próbálok felsorolni pár dolgot, ami gáz a kódban így átpörgetés után:
- undorítóak a változónevek, seggbe kéne rúgni acélbetétes bakanccsal az összes olyan programozót, aki magát és másokat szopat egy-két karakteres változónevekkel. Ez három dologra utalhat, illetve azok egyvelegére: I.) szintet átlépő lustaság II.) kapkodás, III.) valami ostoba szövegszerkesztő használata
normális fejlesztőkörnyezet helyett, ami a keze alá dolgozik (és azért lusta leírni, mert nem egészíti ki neki a kódot a szerkesztő)
Könyörgöm, mi az, hogy if(n==i)?? Miért kell spórolni a karakterekkel?
- levegőben lóg az egész. Semmi egységes struktúra, itt csak eléggé egymástól függő, de "globális függvények" vannak, nincs objektum/prototípus-orientáltság vagy bármi ahhoz hasonló a kódban, egyszerűen nem tartoznak egybe a dolgok. Tartozzon egybe, legyen valami struktúra, az legyen érezhető, hogy ez egy dologhoz tartozik, nem pedig csak úgy be vannak dobálva függvények. Ha már ilyesmit készít, és jQuery, akkor ráadásul illik jQuery plugint készíteni ilyesmire. Még leírás is van róla a hivatalos oldalon:
http://learn.jquery.com/plugins/basic-plugin-creation/
- ha már az előző leírás szóba került, illik a library-nek/pluginnek a saját scope-jában tevékenykednie, nem szennyeznie a globális névteret. Bár ez még persze túlélhető.
- mivel nem az előzőek fényében lett megvalósítva, nem láncolhatók a hívások.
- egyszerűen nem lehet normálisan felparaméterezni az egészet. Nincsenek default opciók, inicializálásnál nem lehet átadni egy objektumot a felülbírálni kívánt paraméterekkel. Minden be van drótozva. Pl. idézek: w=694; //force to max size - hát miért pont 694 a max. size? Mi van, ha a megrendelő úgy dönt, hogy legyen picit átszabva itt-ott (és mondjuk még fizet is érte jó esetben)? Akkor majd lehet áttanulmányozni ennek a katyvasznak a belsejét, és kihámozni belőle valahogy a lényeget?
- ha már bedrótozás: MINDEN be van drótozva, a selectorok is. Ami nagyon gáz. Ismét előjön a szempont: mi van, ha valamiért meg akarjuk változtatni a classneveket? Tényleg át kell bogarászni az egész kódot, és mindenhol egyesével átírni? (Sajnos vannak idióta programozók, akik ezt elfogadhatónak tartják.) Ja, és mi van, ha te valamiért több slidert is el akarsz helyezni az oldalon, és az egyikre más opciókat akarsz érvényessé tenni? Erre nem válasz, hogy de úgyse akarok ilyet. (Az gondolom tiszta, hogy a beton rugalmasságával rendelkező kód mindig rossz.) Többek közt erre is való a pluginkészítés. Ha már jQuery, lehessen kihasználni annak képességeit.
- és a többi, asszem ideje aludni. -
martonx
veterán
Bevallom, nálam a nevezéktannál véget is ért a kód vizsgálata. Nem tudom te, hogy vagy vele, de én napközben túl sok vérpistis PHP kódot látok, ahol pusztán ránézésre meg lehet állapítani a nevezéktanból, hogy a kódon már csak a kuka segíthet, vagy van értelme valakit ráállítani javítgatni itt-ott.
Amikor function x bemenő paramétere y, akkor ott el se kezdem bogarászni, hogy amúgy vajon mit akarhat csinálni a function x, és mit szabályoz az y. Egy kódnak nyilván nem az olvashatóság az egyetlen értékmérője, de ami nem jól olvasható, az az én szememben értéktelen.
-
biker
nagyúr
karma, martonx: szerintem tanulságos lenne kifejteni, hogy 15 sort is hol lehet elqrni
az egybetűs változókat én is utálom, valaki meg hülyének néz, ha kiírom hosszan. De akkor is kiírom hosszan, ha szeretnék később emlékezni rá, mi miért van
php-ben is, kivéve a ciklus $i $j $k maximum, egyébként teljes név -
martonx
veterán
Nem érted. Nem jquery-ileg rossz ez a kód, azzal - ugyan nem áll módunkban kipróbálni - de talán nincs baj.
A kód általánosságban egy okádék. var w??? WTF.
Bénák a funkciók nevei, funkció bemenő paraméterét úgy hívják, hogy n???
Cserébe valaki vette a fáradtságot, és teljesen feleslegesen kommentelte a szarját, ahelyett, hogy normális nevezéktant használt volna.
Tök mindegy, hogy milyen nyelven készül egy kód, legyen az php, c#, javascript (olyan nyelv, hogy jquery nincs) ez a kód minősíthetetlen.
-
biker
nagyúr
válasz
Sk8erPeter #2992 üzenetére
Nézd, nem vagyok egy jquery fanboy, akinek ez csuklóból megy, igen, megvolt, hogy tudnom kéne, épp hány slide van, addig léphetek, majd reset, és kell egy időzítés. Ok, de a megvalósítás....
Egyébiránt igen, van tucatnyi slider, szoktam őket használni, de nem úgy, hogy már egy pixelpontra kihegyezett kész css/html részbe kell beleírni, és azt keresgélni, vajon az adott slider pont úgy szereti-e megkapni az adatokat, olyan divekbe és li elemekbe a navit, ahogy ide tervezve lett, és mennyit kell a css-ét átbarmolni. és mennyit majd a js-ét hogy azokat a css classokat birizgálja, ami nekem van.
Ezért lett egyszerűbb ha ez automatizálódik. és sajnos annyira nem vagyok jquery imádó, hogy azt lássam, mitől hányadék a kód, elhiszem nektek, hányadék, ennyi.
Köszönöm a segítséget és a tanácsokat is, esetleg azzal segítenétek, ha kielemeznétek, mi miért hibás, és hogy írtátok volna okosabban, esetleg rajtam kívül még lenne, aki tanulna belőle. -
Sk8erPeter
nagyúr
Na ne.
Ez kőkemény. Ez a kód okádék, bár ettől függetlenül nem tudom, mi okozott gondot az "automatizálásán". Amúgy az ingyenes, akár alapos doksival ellátott sliderekből Dunát lehet rekeszteni (2 perc Google, és máris nem tudsz választani, hogy melyiket kéne, annyi van), biztos vagyok benne, hogy minimalisták is bőven vannak, ami picit indokolatlanná teszi az ilyesmivel való tökölést, az ilyen minőségű kódért viszont 5 korbácsütés járna, nem lóvé.
-
Karma
félisten
Természetesen lehetséges. Ebben a fiddle-ben megcsináltam, lásd a végén azt a pár sort, amit kiemeltem.
Annyi egyszerűsítést tettem, hogy a léptetés független a kattingatástól. Azt is meg lehetne csinálni, hogy az aktuális oldaltól folytatódjon, de akkor bele kéne nyúlni ebbe a takonyba.
-
biker
nagyúr
Valaki csinált egy weboldalt részünkre, de nem fejezte be.
a slider pl lapozható, de magától nem változik, csak ha én kattingatok
ezt egyszerűen animate-el meghívhatom? gondolom ezt kellene ingereljem: function ut_slider_set_active(n)/**
* UnioTech Sldier
*/
/**
* @return A slide-ok szélessége (int)
*/
function ut_slider_get_width()
{
var w=0;
w=$('.slider-inner').width();
if(!w)
{
w=694; //force to max size
}
return w;
}
/**
* @desc Inicializációkor és az ablakméret változásakor fut le, átméretezi a slidert és elemeit a megfelelő méretre.
*/
function ut_slider_on_winsize_changed()
{
$('.slide').each(function()
{
$(this).css('max-width', ut_slider_get_width()+'px');
});
}
/**
* @param n A gomb indexe
* @desc Az n-edik indexű gombhoz hozzáadja az "active" css osztályt, a többiről pedig eltávolítja azt
*/
function ut_slider_set_active(n)
{
$('.slider-nav').each(function(i)
{
if(n==i)
{
$(this).addClass('active');
}
else
{
$(this).removeClass('active');
/*
if($(this).hasClass('active'))
{
$(this).removeClass('active');
}
*/
}
});
}
/**
* @param n a slide indexe (0-hoz képest)
*/
function ut_slider_go(n)
{
w=ut_slider_get_width();
offset=w*n;
$('.slide').each(function(i)
{
$(this).css('left', (0-offset) +"px");
});
ut_slider_set_active(n);
}
function ut_slider_init()
{
$('.slider-nav').each(function(i) //gombok inicializálása
{
$(this).click(function(e)
{
e.preventDefault();
ut_slider_go(i);
});
});
ut_slider_on_winsize_changed(); //méret
ut_slider_go(0); //offsetek
$(window).resize(function() //ablak átméretezésekor frissítjük a slide -ok méretét
{
ut_slider_on_winsize_changed();
});
}
//run ut_slider_init
$(document).ready(function()
{
ut_slider_init();
}); -
Cathfaern
nagyúr
Ha csak nem valami speciális esetről van szó, akkor jó eséllyel nem javasolt fix ideig várni semmire... szóval első körben az a kérdés, hogy miért akarsz X secet várni? Ha valami időzítéssel kapcsolatos dologról van szó, akkor azt jobb valami eseménnyel lekezelni és nem csak várni egy fix ideig.
De ha mindenképp X secet kell várni, azt így lehet megoldani pl.: [link]
(értelemszerűen ha nem elég a disabled, akkor .off-al leszedni, meg .click-el visszarakni az .attr-ok helyett) -
Zedz
addikt
Sziasztok,
Hogyan csinálnátok meg, ha valamire X másodpercig nem lehetne rákattintani? $("valami").off("click");-ig eljutottam, de ugye ez örökké leszedi a klikkelés lehetőségét. A setTimeout egy idő után csinál valami, az interval pedig folyamatosan. De olyan nincs, hogy valami Y ideig tart, aztán eltűnik?
-
Realradical
őstag
válasz
Sk8erPeter #2980 üzenetére
Köszönöm, a script működik már ilyen formában.
-
Sk8erPeter
nagyúr
válasz
Realradical #2979 üzenetére
Akkor végül is megoldódott? Mert ha nem, tényleg jó lenne egy jsFiddle-példa, és akkor nem nekünk kell szenvednünk vele, hogy demózás céljából összeállítsuk neked a helyes működést. Úgy magyarázatot is tudnánk fűzni hozzá, és gyorsabb lenne a közös feladatmegoldás.
-
Realradical
őstag
válasz
martonx #2978 üzenetére
Nem szeretném, ha valaki megcsinálná nekem, inkább érteni szeretném, mert nem kizárt, hogy lesz még ilyenre szükségem.
A 666 helyére ezt tettem be. Működni látszik.
$(this).closest('tr').find('td:eq(12)').text();Ha valaki még rajtam kívül kontárkodik és anyagot keres arra, hogy a jquery miképp selectál dolgokat, nekem ez segített, főleg a tester oldallal együtt: [link]
-
martonx
veterán
válasz
Realradical #2977 üzenetére
érzésre ez egy triviális 5 perces feladat. Kérlek jsfiddle-be dobj be egy példa html táblát, aztán valamelyikünk, majd rászánja ezt a pár percet, hogy megcsinálja neked.
-
Realradical
őstag
Sziasztok!
Kis segítséget szeretnék kérni. Sharepoint 2013 alatt van egy custom list-em. Ennek a szerkezete így néz ki:
string mező1, string mező2, string mező3, határérték crit, határérték warn, év/hónap januárra, év/hónap februárra, év/hónap márciusra, stb. stb.
Ebből a listából a Sharepoint legyárt egy html table-t amiben egy szál ID nincs. Ezt kéne nekem úgy beszíneznem jquery-vel, hogy a határérték amennyiben a warn mező értéke fölött van, de nem magasabb, mint a crit akkor a ciklusban aktuális év/datumos cella (és nem a sor) sárga, ha a crit fölött van akkor pedig piros. Kb. kétmillió code sample-t áttúrtam, de számomra értelmezhető és/vagy működő megoldást nem találtam arra, hogy két cella összehasonlítása egy tábla iteráción belül, hogy működik.
Tudnátok a témában segíteni?
Amim eddig van:
<script type="text/javascript">
$(document).ready(function() {
$('.ms-cellstyle.ms-vb2').each(function() {
var colText = $(this).text();
if (colText < 666) {
$(this).addClass("cellGreen");
}
else if (colText == 'Yellow') {
$(this).addClass("cellYellow");
} else if (colText == 'Red') {
$(this).addClass("cellRed");
}
//alert($(this).text());
});
});
</script>Úgy gondolom, ha a 666 helyére be tudnám tenni az aktuális sor i indexű cellájának az értékét akkor már jószerével kész lennék. Az már csak hab a tortán, hogy valahogy meg kell majd szűrnöm, hogy csak adott headertextes oszlopra fusson le a script, ne mindegyikre.
Elnézést a konyhanyelvért, nem értek az ajax/javascript/jquery kombóhoz, vastag kliens/adatbázis oldalon fejlesztgetek jellemzően, ha tehetném jelen pillanatomban felerősíteném egy kötéllel a sharepoint tetejére a jquery-t, majd kilőném őket együtt az űrbe
-
Sk8erPeter
nagyúr
"A véleményem az, hogy azért látsz erről kevesebb infót, mert a PHP-t főleg szerver oldalon használják, vagy legalábbis ebben a kontextusban amiről beszélünk, a javascriptet pedig főleg kliens oldalon. Na most az olyan témakörök, mint Osztály, öröklődés leginkább az adatok/állapotok tárolásával hozhatóak összefüggésbe. Adott objektumokat írunk le egy osztállyal, és ezen onjektumokat akarjuk perzisztálni valamilyen módon. Adatokat pedig rendszerint adatbázisba mentünk, az pedig a szerver oldalra tartozik."
He?! Az objektumorientált programozási elveknek már miért a perzisztenciához lenne közvetlen köze?
Ez egy nagy baromság. Az OOP egyszerűen egy programozási módszertan, kódszervezési elv, ami közelíti a kódot valamelyest az ember objektumokban történő gondolkodásához... Önmagában abszolút semmi köze bárminek adatbázisban, fájlban vagy akármiben tárolásához...
Magyarul az érvelés/levezetés már eleve hibás. Hogy PHP-nál több objektumorientált kódot látott, annak az lehet az oka, hogy többet foglalkozott PHP-val, vagy nagyobb problémakörök kapcsán látott kódokat, nem pedig rövid példakódokat nézegetett, vagy fingom sincs. Nyilván csomó netes egyszerű sample code nem tartalmaz komplett objektumorientált kódot. Ha megnéz bármilyen tisztességesebb library-t, plugint, akármit, akkor láthatja, hogy az alapvetően objektumorientált kódszervezés alapján készült."Kliens oldalon nem szokás adatokat tárolni. Van rá lehetőség (indexedDB, localstorage stb..) de nem jellemző."
Hát pedig sűrűn előfordul, lásd bármilyen böngésző-extension JavaScript-kódját is."Szerintem már csak ezért sem találkozni olyan sűrűn a klasszikus értelemben vett osztály fogalmával kliens oldali javascriptben."
Na hát ennek meg aztán megint csak köze nincs az előző állításhoz (még ha az előző állítás helyes is lenne, bár nem az).Amúgy a hsz.-ed végén látható felsorolásodból azt kihagytad, hogy az is kell, hogy az ember tudja használni a keresőt, tudja értelmezni a dokumentációkat (mert akkor nem akad el hülyeségeken, és valóban nem kell ismernie rogyásig egy nyelv összes dolgát - bár nyilván a tapasztalat és az adott nyelv ismerete jót tehet a gyors+minőségi kódírásban).
-
Jim-Y
veterán
Amúgy nem egy rossz kérdés. Érdemes megrágni picit (bár nem a jquery topikban kéne, no mindegy
)
A véleményem az, hogy azért látsz erről kevesebb infót, mert a PHP-t főleg szerver oldalon használják, vagy legalábbis ebben a kontextusban amiről beszélünk, a javascriptet pedig főleg kliens oldalon. Na most az olyan témakörök, mint Osztály, öröklődés leginkább az adatok/állapotok tárolásával hozhatóak összefüggésbe. Adott objektumokat írunk le egy osztállyal, és ezen onjektumokat akarjuk perzisztálni valamilyen módon. Adatokat pedig rendszerint adatbázisba mentünk, az pedig a szerver oldalra tartozik.
Kliens oldalon nem szokás adatokat tárolni. Van rá lehetőség (indexedDB, localstorage stb..) de nem jellemző. Szerintem már csak ezért sem találkozni olyan sűrűn a klasszikus értelemben vett osztály fogalmával kliens oldali javascriptben.
De van olyan use-case, ahol igenis előjönnek ezek a fogalmak kliens oldalon is. Most két ilyen jut eszembe, az egyik a játék készítés. Pl canvas, objektumokat mozgatunk stb. A másik ha pl DTO-kal dolgozunk. (data transfer objects). Ez utóbbira use-case lehet, ha a szerver oldaltól JSON objektumként kapjuk meg a kívánt adatot amit megfeleltetünk egy JS-beli objektumnak.
pl. var product = new Product(); product.fromJSON(prodFromDatabase);
A fenti állításom is talán alátámasztja az, hogy a szerver oldali javascriptben sokkal nagyobb szerep jut ezen fogalmaknak. Esetleg nézd meg ezt a bejegyzésem amit a napokban írtam [link] Itt is szerepet játszanak a klasszikus oop-s szerepkörök, pedig ez egy abszolút minimalista projekt. De például a blog-bejegyzések kezelését egy külön osztály végzi, hogy elszeparáljam az ehhez tartozó kódot a projekt "fő folyamától". Vagy ugyaninnen példa, hogy a Utility funkciókat kiszerveztem egy külön modulba, ez is OOP-s megközelítés. stbstb
---------
A véleményem az, hogy nem az teszi az embert jó web-programozóvá, hogy rogyásig ismeri a jquery-t, és összetesz vele valamilyen minőségű weboldalt. Hanem, hogy ismeri a nyelv lehetőségeit, tudja, hogy mikor mit érdemes használni. Képes olyan kódot írni, ami letisztult, képes a nyelv eszközeit jól használni. Mielőtt még úgy jönne le, én nem tartozom ezen emberek közé. De törekszem rá. ^^
-
Zedz
addikt
válasz
Sk8erPeter #2971 üzenetére
Rosszul fogalmaztam. Arra akartam kilyukadni, hogy a PHP OOP-ról többet hallani, olvasni, hogy mennyire fontos. JS OOP részéről nem, ezért próbáltam hozzá viszonyítani.
(#2972) Jim-Y: Igen, a jövőben megpróbálok pontosabban fogalmazni. A kliens oldali OOP-ra gondoltam.
-
Jim-Y
veterán
válasz
Sk8erPeter #2971 üzenetére
Lehet akkor tényleg félreértettem, kicsit úgy értettem, mintha a javascript objectum orientáltságát kérdőjelezné meg
Zedz: valami olyasmire gondoltál, hogy érdemes-e kliens oldali javascriptben minél inkább kihasználni a klasszikus OOP-s eszköztárat? Mint osztály, objektum, enkapszuláció, öröklődés stb..?
Szerintem ez abszolút feladat függő. Vannak olyan 3rd party toolok amiket egy bizonyos bonyolultság után érdemes lehet használni. Most például a require.js szerű modulrendszerre gondolok, ami a modularizációt segíti. Vagy asszem jquery-nek is van extend metódusa ami az örököltetést segíti/mossa el.
De azt sem szabad elfelejteni, hogy a háttérben akkor is "oop van", amikor csak simán függvényeket definiálsz meg listenereket aggatsz DOM elemekre.
Például egy sima function x() { } is egy objektumnak lesz a része, ugye a global object-nek.
Attól, hogy nem csinálsz explicit konstruktorokat, meg nem örököltetsz még maga a nyelv, és a működése oop "szerű" lesz.
-
Sk8erPeter
nagyúr
"Amúgy mit gondoltok a javascript OOP felhasználásáról? Érdemes lenne azzal is foglalkozni, vagy annyira nincs jelentősége mint mondjuk PHP-ban?"
Szerintem a kérdés második felének nincs abszolúte semmi értelme (az elsőnek még lenne). Mégis mitől játszana már fontosabb szerepet az objektumorientáltság PHP-ben, mint JavaScriptben?Eleve PHP esetén az 5-ös major verzióig nem beszélhettünk objektumorientáltságról. A JavaScript meg valamelyest eleve objektumorientáltan lett tervezve, még ha a klasszikus értelemben véve nem is feltétlenül OOP, de mégis valamennyire az, csak az objektumorientáltsága kicsit körülményes. Prototype kulcsszónak nézz utána.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Introduction_to_Object-Oriented_JavaScript
Egyébként nyilván érdemes foglalkozni vele. Van jelentősége, ha szervezett kódot szeretnél. Agyonerőltetni nem kell, de hogyne lenne érdemes belemenni.(#2970) Jim-Y :
Azért gondolom csak értetted, mire utalt. Lehet írni simán functionöket mindenhova, egységes struktúra kialakítása nélkül is működőképes kódot lehet összehozni. Feladattól függ, nyilván sokszor érdemes objektumszerűségekben gondolkodni. Nem arra kérdezett rá, hogyan írja át a core-t... -
Zedz
addikt
válasz
martonx #2967 üzenetére
De, igazatok van, lehet kicsit később kellene ezzel foglalkozni. Végül máshogy oldottam meg azt amit eredetileg szerettem volna.
Amúgy mit gondoltok a javascript OOP felhasználásáról? Érdemes lenne azzal is foglalkozni, vagy annyira nincs jelentősége mint mondjuk PHP-ban? Persze csak ha már mennek az alapok.
-
Sk8erPeter
nagyúr
válasz
martonx #2966 üzenetére
Használt böngészőtől, meg az aktuális tesztelés körülményeitől is nagyban függ.
Pl. Firefox 30.0-ban a :first-of-type selector győzött. Bár bevallom, éles kódban még sosem láttam ezt a selectort, én sem használtam előtte soha, nem tudom, Te hogy vagy vele. Máskor az :nth-of-type selector nyert, na ezt sem használtam még, az :nth-childot igen, ami meg volt, hogy szintén győzött (pl. Opera 24.0.1543.0 alatt).
Ezek tipikusan azok az optimalizációk, amikkel egyszerűen tényleg nevetséges foglalkozni, mert annyira jelentéktelen a gyakorlatban a különbség, hacsak nem valami soklépéses ciklusban merül fel ilyesmi - bár akkor meg már ahogy mondtad, vanilla JavaScripttel kellene inkább szarakodni, nem jQuery-vel, és akkor nem tűnik ennyire viccesnek az optimalizálgatás.
==============================
(#2965) Zedz :
Teljesen egyetértek martonx-szel, ezek annyira nevetséges különbségek, hogy a kód olvashatósága ezerszer többet számít, mint az, hogy nyerj pár milliszekundumot (gondolom elég egyértelmű, hogy utóbbiból a felhasználó úgysem fog érzékelni semmit). Főleg, hogy ez csak bekorlátoz (pl. mit csinálsz akkor, ha legalább 3 selectorra is alkalmazni kell valamit? Akkor nem lesz jó a selector széjjeldarabolása), és kellemesebb olvasni egy egyben is működő CSS selectort, mint egy szétdaraboltat (még ha adott esetben az utóbbi teljesítményben jobb is, de mint megbeszéltük, ez a különbség elhanyagolható felhasználói szempontból).
Amíg az alapokkal nem vagy tisztában, addig meg aztán tényleg rohadtul ne a mikrooptimalizációkkal töltsd az idődet, hanem azzal, hogy megtanuld a nyelvet. -
martonx
veterán
Ez egyrészt dícséretes, de nem-e előbb meg kellene tanulni az alapokat, és amikor már belátsz a motorháztető alá is, és az akkori tudásod birtokában vagy, majd akkor eldönteni, hogy akarsz / van-e értelme ilyen mikrooptimalizációkkal szórakozni? Hidd el az optimalizálásoknak rengeteg fajtája van weben, és ez lesz az utolsó, amit be kell majd vetned, már ha valaha is...
-
martonx
veterán
válasz
Sk8erPeter #2964 üzenetére
Nahát itt meg a first-child selector lett a leggyorsabb. Mondjuk ez egyik se tud getelementbyIzé-re fordulni, de ennyit a nagy kijelentésekről, hogy ez, meg az a kód a gyorsabb
-
Zedz
addikt
válasz
martonx #2962 üzenetére
Félreértés ne essék, nem kötekedésből ragaszkodom én a find()-hoz, csak több helyen is ezt olvastam, és kicsit elbizonytalanodtam ebben. Nem vagyok teljes mértékben sebesség fan, mert akkor tényleg csak plain javascripteznék, de ahol tudok, ott az optimálisabb megoldással "dolgozok".
(#2963) Sk8erPeter: Köszönöm.
-
Sk8erPeter
nagyúr
válasz
Sk8erPeter #2963 üzenetére
6. http://api.jquery.com/first-child-selector/
$(".banner img:first-child").addClass("kiskutya");
7. http://api.jquery.com/first-of-type-selector/
$(".banner img:first-of-type").addClass("kiskutya");
8. http://api.jquery.com/nth-child-selector/
$(".banner img:nth-child(1)").addClass("kiskutya");
9. http://api.jquery.com/nth-of-type-selector/
$(".banner img:nth-of-type(1)").addClass("kiskutya");
10. $($(".banner img")[0]).addClass("kiskutya");
Készítettem rá egy összehasonlító tesztet:
http://jsperf.com/jquery-first-element-test -
Sk8erPeter
nagyúr
"Esetemben van 4 kép, és én csak az elsőre szeretném rárakni."
Lehetőségek tárháza:
1. http://api.jquery.com/first-selector/
$(".banner img:first").addClass("kiskutya");
2. http://api.jquery.com/first/
$(".banner img").first().addClass("kiskutya");
$(".banner img").eq(0).addClass("kiskutya");
4. http://api.jquery.com/eq-selector/
$(".banner img:eq(0)").addClass("kiskutya");
5. http://api.jquery.com/slice/
$(".banner img").slice(0, 1).addClass("kiskutya");
-
martonx
veterán
A teszt megmutatta, amit eddig is tudtunk (link), hogy egy getelementbyId sokkal gyorsabb, mint egy komplex querySelect. Mivel CSS-ben kénytelen vagy komplex selectorokat használni, ezért szerintem tisztább érzés js-ben is ugyanazokat a selectorokat használni, nem pedig külön elkezdeni egy csomó getelementbyAkármi-ből összeollózni a végeredmény elemet. Másrészt itt azért nanosecundumokról beszélünk, és a css miatt a böngészőnek egyébként is folyamatosan querySelector-ozni kell. Azaz nem az a lényeg, hogy find-ot használsz-e, hanem hogy a végén getelementByAkármi-re fog a kód fallback-elődni, vagy querySelectorra. Azaz a find is pont ugyanolyan "lassú" tud lenni, ha find("#akármi img") a selectorod benne.
Ha ennyire nagy teljesítmény fan vagy, akkor miért jquery-zel? Találkozzunk inkább a sima javascript topikban
Régen én is ilyen voltam, pláne mobiloknál tud ez kritikus lenni. Aztán, amikor megláttam, hogy a 30K-s kétmagos mobilon is milyen gyorsan fut minden, és mennyi mindenhez kell jquery, ráhagytam az egészet, és már csak az érdekel, hogy minél szebb, olvashatóbb legyen a végeredmény kód.
-
martonx
veterán
válasz
Speeedfire #2957 üzenetére
Hát ez elég csúnya volt, de annyira minimális volt javítani, és éppen nagyon ráértem, hogy tessék: link
-
Speeedfire
félisten
Ebben szeretném a segítségeteket kérni. Adott egy tábla, minden egyes sorában vannak legördülők. Ha megváltozik az egyik legördülő értéke, akkor szeretném összefűzni az adott sorban lévő legördülők értékét. De valami miatt az each résznél nálam nem jó az object. Emiatt már az each-be sem megy be.
-
martonx
veterán
Egyrészt a selector-od nem jó, valami ilyesmi kellene $(".banner img")
Másrészt, el kellene dönteni, hogy jquery objektumként kezeled a kapott objektumot, vagy plain javascript objektumként.
A "[0]"-val plain js-ként kezeled, ott viszont ugyebár nem fog tudni hatni a jquery-s magic.Azaz: $(".banner img").addClass("kiskutya") vagy valami ilyesmi fog kelleni neked, meg jó sok css tanulás, plain javascript tanulás, jquery tanulás
mert zavart érzek a fejedben.
-
Zedz
addikt
Sziasztok,
Van egy ilyenem: $(".banner").find("img")[0];
Ha erre akarok valamit adni, mondjuk addClass-t, akkor ezt írja a konzol: undefined is not a function
Miért nem tudja rárakni a képre?
-
spammer
veterán
válasz
Sk8erPeter #2951 üzenetére
Úúúú, na igen, erről van szó!
Hálás köszönet!
Még csak gyors próbát végeztem, de úgy tűnik frankón működik, profi lett.
Ha lenne valami nyűgöm, jelzek, de ezért most tényleg nagy köszönet!
-
Sk8erPeter
nagyúr
válasz
spammer #2950 üzenetére
Mindez azért van, mert korábban szar kódot mutattam.
Őszintén szólva csak összecsaptam a korábbit. Ezenkívül az .append() metódust használtam, mert hirtelen nem ugrott be, hogy ez textarea esetén nem jó, mert szerkesztés után nem fogja hozzáfűzni az értéket:
http://stackoverflow.com/questions/4722914/jquery-append-not-appending-to-textarea-after-text-edited/4723017#4723017Na, egy szó, mint száz, javítottam
Csekkold plíz, hogy ez így jó-e (nem teszteltem agyon, ezt is gyorsan pötyögtem össze, de kicsit jobban odafigyelve, első próbálgatások alapján működik, meg beleraktam minimális hibaellenőrzést):
http://jsfiddle.net/56HNA/4/Még azt javítani kellene, hogy ne legyen keveredés plain JS és jQuery közt, mert az nem olyan szép, de ehhez most nem nagyon volt kedvem.
Ja, még annyi, hogy a numberOfLineToSelectFromTextToInsert jelöli azt a számú sort, amelyiket ki kellene jelölni a beillesztendő szövegből (a hosszú változónévből kiderül), tehát még ez is be van drótozva ilyen módon, hogy épp hanyadik sort kell kijelölni, de ezt ennek alapján már könnyű átdolgozni úgy, hogy akár szöveges alapú keresést végezz, hogy milyen stringet keresel - és azt a sort jelölje ki, amelyikben az a string megtalálható. Ha esetleg ilyenre lenne szükséged még pluszban.
Kérdezz, ha valami nem tiszta a kódból. -
spammer
veterán
válasz
Sk8erPeter #2947 üzenetére
"Na várjál, itt mindegyik megoldásban egyelőre a "line4->selected" sor teljesen be van drótozva, bármit változik a szöveg, természetesen az indexek "elromlanak" "
Na igen, ez az, erre írtam az előbb, hogy "nem működik" utána.
"Na most őszintén szólva nem fogtam fel ezt a példát, ezt körül tudnád írni picit jobban, mi nem működik?"
Tehát a 2-es fiddle-nél megnyomod a gombot, beszúrja a sorokat és kijelöli, eddig oké. De utána beírsz valamit kézzel, mondjuk a line5 alá beírsz valamit, utána már hiába nyomod meg a gombot, nem szúr be a szöveg alá semmit, nem működik a gomb. Ahogy te is írtad, ha bármit módosítasz, elromlik a drótozás miatt.
A tökéletes megoldás az lenne, ha nem romlana el, akármit írhatsz, mert a gombnyomással mindig mindig az aktuális rész után szúrna be és az újonnan beszúrtak közül jelölné ki a negyediket. Lásd: kép
Ebből adódóan ha ezek alá (után) is írhatnál bármit, mert ha megnyomod a gombot, akkor ismét ezek után szúrna be és ezekből jelölné ki a negyediket. Lásd: kép
és így tovább.
Tehát a lényeg, hogy a beszúrandó anyagot mindig az aktuális tartalom után szúrja be és a beszúrtak közül jelölje ki a negyediket.
Bocsánat, ha eddig félreérthető voltam, illetve nem írtam már az elején, hogy a textareaba lehet írni (módosítani). Így azért már kicsit bonyolultabb a helyzet, gondolom.
De ha sokat kell tökölni vele, hagyd a fenébe, megfelel az 1-es fiddle megoldás is, amikor csak első esetben jelöli ki.
-
Jim-Y
veterán
válasz
Sk8erPeter #2947 üzenetére
Ja.. simán lehet.. sőt én is így érzem, tök szívesen foglalkoznék többet most ezzel, de melóban vagyok -nem gáz-, de az már igen, hogy a fostos FF jsfiddle alatt úgy belassul, hogy írni nem tudok bele, meg kijelölni sem, meg semmi
Amúgy én sem értem a problémát teljesen, de szerintem ez azért lehet, mert Spammer csak simán gyakorol, biztos volt egy alap feladat/probléma amit megcsinált, utána meg még játszott picit, és úgy alakult ki a kérdés, szoval lehet nincs is a dologban logika
megj: nekem meg csak simán a SS, meg LS ugrott be először, hogy azzal is meg lehetne csinálni ezt
-
Sk8erPeter
nagyúr
válasz
spammer #2946 üzenetére
Nincs mit!
Na várjál, itt mindegyik megoldásban egyelőre a "line4->selected" sor teljesen be van drótozva, bármit változik a szöveg, természetesen az indexek "elromlanak", ezt csak szövegkereséssel lehet megkerülni! Igazából nem tudom, mi a végcélod.
Az viszont semmiképp sem jó megközelítés, hogy csak elsőre fusson le a szövegkiválasztós módszer, mert akkor a többi beillesztésnél nem lesz kijelölve semmi."Viszont ez után már nem működik a gomb, tehát a blablabla után nem szúrja be újra a sorokat."
Na most őszintén szólva nem fogtam fel ezt a példát, ezt körül tudnád írni picit jobban, mi nem működik?(#2944) Jim-Y:
Én itt erre a feladatra kicsit overkillnek érzem a sessionStorage használatát. -
spammer
veterán
válasz
Sk8erPeter #2945 üzenetére
Köszönöm mindkét fiddlet, az elsőnél maradok azt hiszem.
Mert bár a második is működik frankón, azt elfelejtettem említeni, hogy a beszúrás után még lehetséges, hogy lesz írva valami szöveg, ebben az esetben viszont a második fiddle példa már nem működik:
line1
line2
line3
line4->selected
line5
aztán ide utána beírok valamit, blablabla--
Viszont ez után már nem működik a gomb, tehát a blablabla után nem szúrja be újra a sorokat.(#2944) Jim-Y: köszi neked is, azt hiszem, maradok ennél, de máskor még lehet, hogy jól jön majd az általad írt számolgatós módszer.
-
Sk8erPeter
nagyúr
válasz
spammer #2943 üzenetére
"(A lefutás megakadályozásához meg gondolom számolni kellene a klikkeket, mármint, hogy első volt-e vagy nem, de ilyennel meg aztán tényleg felesleges lenne pöcsölni.)"
Nem erről beszéltem.Azt megoldani, hogy ne fusson le még egyszer a kiválasztásért felelős függvény, a létező legegyszerűbb probléma. De onnantól kezdve, hogy a következő menetben felülírod a tartalmát a textarea-nak, NEM lesz kiválasztva az általad kívánt sor, mivel elvesztetted a felülírással az előző kijelölést! Vágod? Itt van egy szemléltető példa, egyszerűen bevezettem egy isFirstInsertion változót, és na bumm, nem fut le többször, de aztán nem is működik: http://jsfiddle.net/56HNA/1/
Szóval ennek a beillesztések utáni újból és újból történő lefutását nem fogod tudni megúszni, de nem is kell!"A jobb megoldás a mindig beszúrt rész 4. sora lenne persze, ha nem kell tökölni vele sokat, mert egyáltalán nem életbevágó dolog, inkább csak úgy kíváncsiság, hogy ebből megoldható-e relatíve egyszerűen.
"
MegoldhatóEnnyiből:
http://jsfiddle.net/56HNA/2/ -
Jim-Y
veterán
válasz
spammer #2943 üzenetére
Szerintem ezt viszonylag egyszerű megoldani, mindkét esetet:
Az eventlisteneren kívül csinálsz egy ilyet:
sessionStorage.setItem("clickCount",0);
Majd a click-en belül:
// normálisabb parszolást csinálj, én munkában nem foglalkoztam többet vele ^^
var clickCount = 0+sessionStorage.getItem("clickCount");
sessionStorage.setItem("clickCount", ++clickCount);
majd
selectTextareaLine(tarea,4*(0+sessionStorage.getItem("clickCount"))); // selecting line4*countKipróbáltam, de a selectTextArea fv-t át kéne írnod, mert nem működik jól, majd meglátod
-
spammer
veterán
válasz
Sk8erPeter #2942 üzenetére
A jobb megoldás a mindig beszúrt rész 4. sora lenne persze, ha nem kell tökölni vele sokat, mert egyáltalán nem életbevágó dolog, inkább csak úgy kíváncsiság, hogy ebből megoldható-e relatíve egyszerűen.
(A lefutás megakadályozásához meg gondolom számolni kellene a klikkeket, mármint, hogy első volt-e vagy nem, de ilyennel meg aztán tényleg felesleges lenne pöcsölni.)
(#2941) martonx: igaz, de "eredetileg" nem is kell semmit kontrollálnom, sima beszúrás, aztán kész, csak utána gondoltam próbálgatom az ilyen selectes dolgokat is, aztán úgy jutottam el ehhez.
-
Sk8erPeter
nagyúr
válasz
spammer #2940 üzenetére
Mivel újból és újból felülírod a textarea tartalmát, ezért a kiválasztáshoz szükséges is, hogy újból lefusson a selectTextareaLine() függvény. De miért zavar az téged?
Most akkor melyiket szeretnéd, hogy ténylegesen az összes tartalomból a 4. sor legyen kiválasztva, vagy mindig az újabb beszúrt szöveg 4. sora?
-
martonx
veterán
-
spammer
veterán
válasz
Sk8erPeter #2939 üzenetére
Köszi, átfutom majd.
Egy másik kérdés: Itt ez a fiddle , a lényeg annyi, hogy gombnyomásra a textareaba beilleszt pár sort és az egyik sort rögtön ki is jelöli/választja (selectTextareaLine).
Na most a button click function-jén belül hogyan tudnám megadni, hogy kizárólag egyszer/első alkalommal lője be a selectTextareaLine(tarea,4); -es részt? Ugyanis ha újabbat klikkelünk, akkor beszúrja az újabb sorokat, de újra a 4. sort választja ki, ami utána már felesleges.
Tehát vagy az lenne a lényeg, hogy csak első klikkeléskor legyen selectTextareaLine és utána már ne, vagy pedig az, hogy mindig az éppen beszúrt sorok közül válassza ki a negyediket, de ez utóbbi már gondolom bonyolítja az egészet, szóval maradhatunk az első esetnél.
A lényeg, hogy a click-nek újra és újra működnie kell a sorok beszúrása miatt, csak a selectTextareaLine rész működjön egyszeri alkalommal.
$('#insertbutton').one('click', function() ez esetben ugye nem jó, mert akkor a button többé nem szúr be sorokat sem.
-
Sk8erPeter
nagyúr
válasz
spammer #2938 üzenetére
Pl. Chrome extensionnél meghatározhatod, mikor kerüljön injektálásra a JS-fájl, lásd a run_at részt:
https://developer.chrome.com/extensions/content_scripts"In the case of "document_start", the files are injected after any files from css, but before any other DOM is constructed or any other script is run.
In the case of "document_end", the files are injected immediately after the DOM is complete, but before subresources like images and frames have loaded.
In the case of "document_idle", the browser chooses a time to inject scripts between "document_end" and immediately after the window.onload event fires. The exact moment of injection depends on how complex the document is and how long it is taking to load, and is optimized for page load speed.
Note: With "document_idle", content scripts may not necessarily receive the window.onload event, because they may run after it has already fired. In most cases, listening for the onload event is unnecessary for content scripts running at "document_idle" because they are guaranteed to run after the DOM is complete. If your script definitely needs to run after window.onload, you can check if onload has already fired by using the document.readyState property."
De neked a css lesz az érdekes, beszúrhatsz saját CSS-t, így pl. adott elemre vonatkozó display:none-t:
css:
Optional. The list of CSS files to be injected into matching pages. These are injected in the order they appear in this array, before any DOM is constructed or displayed for the page. -
spammer
veterán
válasz
martonx #2937 üzenetére
Nincs hozzáférés az oldalhoz (ezért a userscript), így css-t is csak userstyle-ként tudnék applikálni az oldalra. De hát akkor majd meglátom, hogy mi legyen, nem biztos, hogy az az 1 pillanat megér annyit, hogy még pluszban userstyle-t meg azt kezelő extensiont is telepíteni kelljen hozzá a júzereknek csak ezért.
-
spammer
veterán
Userscriptet készítek és $( document).ready() -vel fut le, de ilyenkor ugye van egy pillanat, amíg "átalakul" az oldalnak azon része, amire a script vonatkozik. Tudom mi az oka, előbb ugye készen kell állnia, utána tudja csak átvariálni. Na de lehet ezzel valahogy ügyeskedni, vagy valahogy megoldani, hogy úgy lássák kapásból a júzerek, mintha eleve úgy töltődött volna be az oldal?
Próbáltam úgy, hogy pl. a div-et először hide()-olom, jön módosító rész, aztán div újra megjelenítés, de a böngésző a hide() előtt (ready, ugye) már megjeleníti az oldalt és látszik egy pillanatra az "eredeti", ergo tök felesleges hide()-olni, mert látványra ugyanazt az eredményt kapom.
-
Vekko
aktív tag
válasz
martonx #2933 üzenetére
Nincs semmilyen subdomain, maximum a www. zavarhat be ha bezavarhat. Mert más nincs.
Teljesen tisztán a "tarhely.hu"-ról lehet elérni a joomlát. Nem véletlen írtam így a domaineket.
Esetleg arra tudok még gondolni, hogy a youtube.html-ben lévő iframe beágyazás ugye a youtube.com domainról származik és ez zavarhatja. De én nem tudom, ehhez ti értetek. -
martonx
veterán
Jelzem csak vaktában találgatok, de a cross-domain policy nem szokott tévedni.
Gondolom esetedben a youtube.html-ednek a domain-je a tarhely.hu.
A joomla izédnek a domainje meg xy.tarhely.hu vagy xy.hu vagy mittudomén mi, de biztos, hogy nem csak tisztán a tarhely.hu
Azaz hiába vannak szomszédos mappákban, de ettől a domainjük még különböző. -
Karma
félisten
-
Vekko
aktív tag
Persze használok szervert, és ez a bizonyos youtube.html is azon a szerveren van, ahol ez az oldal a scriptel. Tehát ugyanarról a domainról töltöm be. Azért írtam ki így URL-be, mert hirtelen könnyebb ötletnek tűnt, mint joomlán belül megkeresni, hogy hol keresi a fájlokat ez a modul, ahova írok.
Kipróbáltam a .htacces megoldást és 500-as error lett. Csak simán beillesztettem a végére ezt:
Access-Control-Allow-Origin: * -
Karma
félisten
Nos, a hiba szerint pont az történt, amit írtam: az AJAX alaphelyzetben csak azon a domainen működik, ahonnan a weboldalad jön. Ez a böngészők biztonsági funkciója.
Két dolgot tehetsz:
1) a fejlesztés alatt levő oldaladat is feltöltöd a" tarhely.hu"-ra, és ott teszteled. Vagy a betöltött oldalt másolod le lokálisan.
2) a tarhely.hu szerverét rábeszéled (pl. Apache HTTPD-t egy .htaccess fájllal), hogy küldjön a válaszban egy "Access-Control-Allow-Origin: *" headert. Ezután felenged a Chrome.Illetve csak a biztonság kedvéért: ugye használsz tesztelésnél is valamilyen szervert, nem pedig fájlként nyitottad meg a HTML-t? Arra is háklis a Chrome, és nem enged semmilyen AJAX-ot.
-
Karma
félisten
A betöltendő URL-eddel azonos domainen van a weboldalad? A cross-domain hívások okozhatnak ilyet. Monsjuk a Chrome ekkor a Console-ra is kiírja, hogy miért nem engedte ki a hívást, arra nézz rá.
Ugye csak egyszerűsítetted a kódot másolás előtt, azért van asd tag a HTML-ben?
-
Vekko
aktív tag
Közben olyan gondom akadt, hogy észrevettem firefoxon működik, chrome alatt viszont nem ez a kód:
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js">
</script>
<script>
$(document).ready(function(){
$("asd").click(function(){
$("#div1").load("http://tarhely.hu/youtube.html #p1");
});
});
</script>
<asd>nyitás</asd>
<div id="div1"></div>Mi lehet a hiba?
-
Vekko
aktív tag
Üdv!
Tudtok nekem mutatni egy könnyű megoldást arra, hogy szeretnék úgy tartalmat megjeleníteni, hogy azt az oldalbetöltéskor még ne töltse be. Pl. lenyíló tartalom, esetleg görgetésnél mint facebookon.
-
martonx
veterán
válasz
Sk8erPeter #2919 üzenetére
Tudhatnád, hogy a szupertitkos, szuperprojektekben, amiken jobbnál jobb szakértők serege dolgozik, sokkal több az újdonság, mint más szokványos projektekben.
-
Sk8erPeter
nagyúr
Ez fura, úgy látszik, MERŐBEN MÁS Google-találataink vannak, kipróbáltam azt a keresőstringet, hogy "set tab order in a form", és már az első találat megmondta a választ.
Na jó, nem köcsögösködöm, de őszintén szólva eszembe nem jutott volna, hogy a tabindex újdonság a jQuery topicban.
-
martonx
veterán
válasz
Sk8erPeter #2915 üzenetére
-
Muton
addikt
heló!
van egy inputom, utána egy egyedileg gyártott dropdown-om (ami klikkre nyílik le), majd megint egy inputom.
van elegáns módja annak, hogy hogy a dropdownt bevegyem a tab orderbe? azaz ha az első inputban vki tabot nyom, akkor klikkeljen a dropdownra.
vagy handlert kell írni?
-
Sk8erPeter
nagyúr
válasz
daninet #2912 üzenetére
Nem igazán néztem a feladatodat, de az ilyenekről szokj le, hogy egymás után ennyiszer hívogatsz tök feleslegesen egy metódust, jelen esetben a jQuery(sidebar) kilencmillióhatszázezerkettőször van leírva nálad, így az minden alkalommal meghívódik, overheadet jelent, még ha nem is veszed észre. Tárold el egy változóban az értékét, és használd azt:
$sidebar = jQuery(sidebar);
$sidebar.addClass("fixed");
$sidebar.KISKUTYAFÜLE(); -
daninet
veterán
válasz
daninet #2911 üzenetére
Megoldottam, meglepően könnyen értelmezhető volt kicsit gondolkodva, bár gondolom ez elég alap dolog
azért leírom hátha valaki hasonlót keres valamikor
if (leftH < windowH) {
jQuery(sidebar).addClass("fixed").removeClass("dynamic");
jQuery(sidebar).height('570px'); <-itt az 570 helyén az ablak magasságát rakta be
} else {
jQuery(sidebar).addClass("dynamic").removeClass("fixed");
jQuery(sidebar).height(midColH);
} -
daninet
veterán
Sziasztok!
Készítek magamnak egy oldalt, és leszedtem egy joomla sablont. CSS-el és HTML-el barátok vagyunk, viszont a php-vel csak alap szinten kommunikálok. Belefutottam, hogy az egyik div-em magasságát jquery adja meg, és egy apró módosításhoz kérném a segítségeteket.
Az egész oldal responsive, 600px alatti képernyőszélesség esetén átvált egy mobil nézetbe. Ez eddig oké, viszont én a 600px feletti kinézetét szeretném egy aprót módosítani.
Adott div, id-je #sidebar ami tartalmaz egy #leftcol és azon belül egy #left div-et. Engem a sidebar magassága érdekel, pontosabban az, hogy a jquery minden esetben a képernyő aljáig nyújtja a div-et. Ezt szeretném fix 600px magasságra állítani, 600px szélesség felett nincs szükségem az automatikus magasságra.A div-ek kb 10 php-ban vannak ide-oda hivatkozva, ezért egy rajzot készítettem sokkal egyszerűbb volt mint kihámozni hogyan állnak
előre köszönöm a segítséget!
-
Karma
félisten
Mi az, hogy nem lehet hozzáadni meg törölni? Milyen JavaScript doksit olvastál eddig?
Tüzeld el. A felszabaduló gázok is hasznosabbak mint a szöveg.
Ez mind valid és működik:
// ures objektum
var o = {};
// hozzaadas (egyenertekuek)
o.a = [1, 2, 3];
o['b'] = [4, 5, 6];
// hozzaadas "full dinamikusan"
var key = 'c' + 2;
o[key] = [7, 8, 9];
// torles
delete o.a;
delete o['b'];
delete o[key]; -
Jim-Y
veterán
Mit akarsz pontosan elérni? Csak mert az objektumok is teljesen dinamikusan módosíthatóak, van olyan programnyelv, amiben az objektumokat (amik egy az egyben úgy működnek mint js-ben) Map-nek hívják.
Egyébként...
> var myobj = {};
undefined
> for(var i=0; i<5; ++i){
... myobj[i] = i;
... }
4
> Object.keys(myobj);
[ '0',
'1',
'2',
'3',
'4' ]
>Ebben mi a nem dinamikus?!
, asszociatív tömbök...
-
Lacces
őstag
Köszönöm.
Hát akkor legyen dupla munka.
Bár az a bajom az objektumokkal, hogy sehogy sem lehet ezekhez dinamikusan hozzáadni. key és value (array)-t.
Én erre nem találtam módot. Ahogy böngészem is a stackoverflow még csak statikus kulcs hozzáadást láttam
Igazából ez az array-es dolog lett volna az egyszerűbb, itt összeállítom az array-t, felküldem szerverre, ott lecsekkolja hogy a Session-ben tárolt egyik array-yel megegyezik és vissza.
Megvan.
-
Jim-Y
veterán
Idézek a referenciából:
var fruits = [];
fruits.push("banana", "apple", "peach");
console.log(fruits.length); // 3
When setting a property on a JavaScript array when the property is a valid array index and that index is outside the current bounds of the array, the engine will update the array's length property accordingly:fruits[5] = "mango";
console.log(fruits[5]); // "mango"
console.log(Object.keys(fruits)); // ["0", "1", "2", "5"]
console.log(fruits.length); // 6A köztes elemek undefined-ok lesznek. Tehát length = utolsó numerikus index+1.
Ha mindenképp workaroundot akarsz akkor próbáld meg ezt: Object.keys(arr).length
De szerintem is inkább a szemléleten kéne változtatni.
-
Lacces
őstag
Hali.
Van egy érdekesség, hogy amikor a jQuery-ben próbálok egy tömböt létrehozni, akkor a végén a tömb hossz = tömb utolsó kulcsa + 1 lesz.
És nem értem hogy miért.
A console.log kimenet az array-re ez lesz:
[831: Array[2], 834: Array[2], 847: Array[2], 848: Array[2]]
831: Array[2]
834: Array[2]
847: Array[2]
848: Array[2]
0: "345"
1: "2.05"
length: 2
__proto__: Array[0]
length: 849
__proto__: Array[0]valamiért a tömb hossza az tényleg 849 lesz, amit át is ad. De nem értem, hogy miért. Próbáltam már másképp is bejárni az li elemeket az each-chel de ugyanígy határozza meg a tömb méretét...
Valakinek van ötlete, hogy ez miért fordulhat elő?
-
Sk8erPeter
nagyúr
válasz
Cathfaern #2902 üzenetére
"Mi Kohanát használtunk, viszont elég rendesen bele lett módosítva saját igények szerint [...] Ahhoz hogy működjön minden, a .htaccess file-okon is módosítani kellett"
Már eleve nem kicsit furcsa, hogy bele lett tákolva egy framework core-fájljaiba, és akkor ebből következett az a teljesen általánosító mondatod, hogy "gyakorlatilag egy összetettebb keretrendszernél így is elég szívás tud lenni a .htaccesst rendesen belőni"? Bocs, de ezt az érvet így a körülmények ismeretében különösen nem tudom komolyan venni.(Mellesleg még a korábbi hsz. írása előtt belenéztem azért pl. a Symfony .htaccess-ébe is, és nem láttam túl komplikált dolgokat, amit ne lehetne átültetni egy web.configba, nem beszélve arról, hogy lehet találni megfeleltetést neten.)
Most tulajdonképpen semmi újító szempontot nem mondtál, hanem azokat az érveket soroltad fel, amik már előre ki lettek vesézve, de azért kicsit offenzív stílusban álltál elő a "Szép és jó", meg "Persze ez otthoni hobbi weblapnál nem akkora probléma"-jellegű érvekkel, aztán kiderült, hogy tulajdonképpen semmi konkrétummal nem tudod alátámasztani, amit írtál, mivel még csak nem is használtad az IIS-t. -
Cathfaern
nagyúr
válasz
Sk8erPeter #2901 üzenetére
Ok, konkretizáljunk
Mi Kohanát használtunk, viszont elég rendesen bele lett módosítva saját igények szerint. Sajnos azt nem tudom, hogy pontosan mit, mivel ezt a részét nem én csináltam (illetve későbbiekben nem is vettem részt közvetlenül a programozásban). Ahhoz hogy működjön minden, a .htaccess file-okon is módosítani kellett, illetve amikor egy hostolt szerverre kellett felraknunk, akkor (eltérő php config miatt amit nem tudtunk módosítani) egy jó adag szórakozás volt, mire összehoztuk a .htaccess filet újra, hogy ott is működjön.Tény, hogy nem ismerem az IIS-t, sőt sokáig azt se tudtam, hogy a Windows része
Az idézett mondat nem arra vonatkozik, hogy az IIS nem lenne alkalmas komolyabb weboldalak hostolására. Hanem arra vonatkozott, hogy aki nem tudja biztosítani, hogy éles rendszeren is IIS alatt fusson a honlap és összetettebb (php) háttérrendszerrel rendelkezik a honlapja, az jobban jár ha a fejlesztést is olyan környezetben végzi, mint amilyen az éles rendszer lesz. Ha lehet tudni, hogy IIS-en fog futni, akkor nyugodt szívvel ajánlom, hogy azon fejlesszen az ember, sőt, akkor azt ajánlom én is, hogy inkább azon fejlesszen, mint Apache-on. Ha pedig nem túl összetett a honlap, vagy nem szorítják határidők, akkor nyugodtan lehet bármin fejleszteni, maximum élesbe állítás előtt kell kicsit szórakozni vele.
Aztán persze az is lehet, hogy az ég világon semmi probléma nincs az IIS - Apache váltáskor. De jelenlegi ismereteim alapján ha rám lenne bízva egy webfejlesztés projekt és tudnám, hogy szoros határidő van és Apache fog futni a szerveren, akkor azt mondanám, hogy Apachon is fejlesszünk. Ennyi -
Sk8erPeter
nagyúr
válasz
Cathfaern #2899 üzenetére
Az a jó, hogy azokkal az érvekkel kezdted, amikre már előre reagáltam.
Azon én is elgondolkoztam picit, hogy pontosan hogy is érted azt, hogy "gyakorlatilag egy összetettebb keretrendszernél így is elég szívás tud lenni a .htaccesst rendesen belőni", és ezt konkrétan mivel támasztanád alá, de mivel nem fejtetted ki, úgy gondoltam, inkább rádbíznám ezt a feladatot, akkor talán tudunk is róla érdemben beszélni (és nem csak nagy általánosságokban).
Pontosan erről beszéltem korábban, hogy az emberkék nagy része úgy tűnik, egyszerűen nem ismeri az IIS-t, mint nagyon jó Apache-alternatívát, ezért tart is tőle, bár a rosszabb része az, amikor erősen flegmázva is adja ezt elő, ez utóbbit sajnos te is elkövetted a végén: "Persze ez otthoni hobbi weblapnál nem akkora probléma". Ebből az következik, ha szó szerint értem (akár csak rosszul fogalmaztál, akár nem), hogy tehát akinek elegendő az IIS, akkor az valószínűleg nem tart még azon a szinten, hogy azokkal a rejtélyes-misztikus-homályos problémákkal találkozzon, mint az, aki annyira bölcs, hogy eleve Apache-on fejlesszen/teszteljen. Tehát akkor nyugodtan vehetem magamra is. Meg a cikk írója is. Meg még páran mások is.De megelőlegezem neked azt a jóindulatot, hogy nem veszem szó szerint.
Új hozzászólás Aktív témák
Hirdetés
- Milyen belső merevlemezt vegyek?
- Filmvilág
- sh4d0w: Vigyázz a háttértáradra...
- S.T.A.L.K.E.R. 2: Heart of Chornobyl
- Telekom otthoni szolgáltatások (TV, internet, telefon)
- sziku69: Fűzzük össze a szavakat :)
- Luck Dragon: Asszociációs játék. :)
- World of Tanks - MMO
- E-roller topik
- Túra és kirándulás topic
- További aktív témák...
- BESZÁMÍTÁS! Apple MacBook Pro 16 M4 Max 36GB RAM 1TB SSD macbook garanciával hibátlan működéssel
- BESZÁMÍTÁS! Apple MacBook Pro 14 M4 Max 36GB RAM 1TB SSD macbook garanciával hibátlan működéssel
- BESZÁMÍTÁS! Apple MacBook Pro 16 2024 M4 Max 64GB 2TB SSD macbook garanciával hibátlan működéssel
- BESZÁMÍTÁS! Apple Macbook Pro 13 2020 M1 16GB 1TB SSD macbook garanciával hibátlan működéssel
- BESZÁMÍTÁS! ASUS TUF VG27AQ 165Hz QHD IPS 1ms monitor garanciával hibátlan működéssel
- LG 65" C1 OLED - 4K 120Hz 1ms - NVIDIA G-Sync - FreeSync Premium - HDMI 2.1 - PS5 és Xbox Ready!
- Designer 4K Monitor - BenQ PD-2700-U
- Gamer egerek és billentyűzetek kitűnő árakon! Most extra 10% kedvezmény!
- Vadiúj videókártyák! Kamatmentes rèszletre is! Èrdeklődj!
- Bomba ár! Lenovo ThinkPad X250 - i7-5GEN I 8GB I 256GB SSD I 12,5" HD I Cam I W10 I Garancia!
Állásajánlatok
Cég: FOTC
Város: Budapest