Hirdetés

2024. június 16., vasárnap

Gyorskeresés

Téma összefoglaló

Téma összefoglaló

  • Utoljára frissítve: 2014-02-25 10:20:57

LOGOUT.hu

JavaScript != Java (A JavaScript nem összekeverendő a Javával, két különböző programozási nyelvről van szó!)

Összefoglaló kinyitása ▼

Hozzászólások

(#2751) Muton válasza Sk8erPeter (#2749) üzenetére


Muton
addikt

oké, akkor az kell csinálni, hogy:

var a="a";
var str = "b";

str=append(str,a);

function append(a,b){
return a+b;
}

?

Muton#2316 - $z@r a drop >_<

(#2752) Sk8erPeter válasza sztanozs (#2750) üzenetére


Sk8erPeter
nagyúr

Igen, ez káros is tud lenni sokszor. :(

Sk8erPeter

(#2753) Sk8erPeter válasza Muton (#2751) üzenetére


Sk8erPeter
nagyúr

Nem kell felfedezni a spanyolviaszt. :N
concat() method

Tehát
a.concat(str);
VAGY
str.concat(a);

Ez visszatér az összefűzött stringgel.

Sk8erPeter

(#2754) Muton válasza Sk8erPeter (#2753) üzenetére


Muton
addikt

király!
még egy kérdés mára:
szeretnék egy listát, amibe be kell tölteni objektumokat, ha vannak és üres array legyen, ha nincsenek.
ez jó? :

var array;
if(!string){
array= new Array();
}else{
array=JSON.parse(string);
}

else ágon nem kell a new Array valahogy?

[ Szerkesztve ]

Muton#2316 - $z@r a drop >_<

(#2755) Sk8erPeter válasza Muton (#2754) üzenetére


Sk8erPeter
nagyúr

"else ágon nem kell a new Array valahogy?"
Nem, mé' kéne?
Itt láthatsz példát a JSON.parse-ra:
var jsontext = '{"firstname":"Jesper","surname":"Aaberg","phone":["555-0100","555-0120"]}';
var contact = JSON.parse(jsontext);
document.write(contact.surname + ", " + contact.firstname);

Jelen esetben objektum lett belőle, de lehet akár tömb is (Return Value: An object or array.), ha olyan a JSON string (és valid).
Működőképes ez így, ahogy írtad.
Bár szerintem felesleges a new Array() az if ágnál is, nyugodtan maradhatna az eredeti undefined érték is a változóban, az úgy még egyértelműbbé teszi a dolgot, hogy nincs beállítva.
Persze megközelítés kérdése.

De ha szabad, azt javaslom, kerüld az ilyen változóneveket, mint az str, array és hasonlók, mert igaz, hogy a típus a névből kikövetkeztethető, de az nem, hogy konkrétan milyen adat lesz ott majd. Persze ha ezt csak példaként írtad, és a kódjaidban beszédesebb neveket használsz, akkor nem szóltam. :)

[ Szerkesztve ]

Sk8erPeter

(#2756) Muton válasza Sk8erPeter (#2755) üzenetére


Muton
addikt

thx a mai segítséget! :R

nem volt tiszta, hogy magát az objektumot adja át, vagy annak a referenciáját. mert java-ban (ahol eddig mozgolódtam) nem mindegy, hogy van-e new operátor, vagy sem.

megtanítottak nevezni (rákényszerítettek a szemetek, hogy tanuljam meg :DD), csak az egyszerűség miatt neveztem el így

Muton#2316 - $z@r a drop >_<

(#2757) Sk8erPeter válasza Muton (#2756) üzenetére


Sk8erPeter
nagyúr

Szívesen! :)

Innen érthető meg elég jól, mit is csinál a JSON.parse(), lényegében hasonló az eval()-hoz, csak az a nagy különbség, hogy a JSON.parse() nem engedi lefutni pl. az esetlegesen kártékony JavaScript-kódot. Az eval()-nak pedig épp ez a nagy veszélye, hogy rajta keresztül lefuthatnak a rosszindulatú kódok.

Idézet:
"To convert a JSON text into an object, you can use the eval() function. eval() invokes the JavaScript compiler. Since JSON is a proper subset of JavaScript, the compiler will correctly parse the text and produce an object structure. The text must be wrapped in parens to avoid tripping on an ambiguity in JavaScript's syntax.
var myObject = eval('(' + myJSONtext + ')');

The eval function is very fast. However, it can compile and execute any JavaScript program, so there can be security issues. The use of eval is indicated when the source is trusted and competent. It is much safer to use a JSON parser. In web applications over XMLHttpRequest, communication is permitted only to the same origin that provide that page, so it is trusted. But it might not be competent. If the server is not rigorous in its JSON encoding, or if it does not scrupulously validate all of its inputs, then it could deliver invalid JSON text that could be carrying dangerous script. The eval function would execute the script, unleashing its malice.

To defend against this, a JSON parser should be used. A JSON parser will recognize only JSON text, rejecting all scripts. In browsers that provide native JSON support, JSON parsers are also much faster than eval. It is expected that native JSON support will be included in the next ECMAScript standard.
var myObject = JSON.parse(myJSONtext, reviver);"

[ Szerkesztve ]

Sk8erPeter

(#2758) papa019


papa019
senior tag

Most lehet, hogy óriási butaságot fogok kérdezni, de tudom valahogy csoportosítani a függvényeimet JS-ben?

Egy példával illusztrálom, hogy mit szeretnék:

Vannak mondjuk számok és szövegek, amiket kezelni szeretnék.
Létrehozok két "könyvtárat", az egyikben a számokat kezelő függvények vannak, míg a másikban a szövegeket kezelők.
És például valahogy úgy hívnám meg a függvényeket, hogy szam_fv.osszeadas(), stb.

Tudom, hogy ha létrehoznék egy class-t, akkor abba tudnék függvényeket tenni, de én csak szimpán a függvényeket szeretném csoportokba rendezni...

(#2759) Sk8erPeter válasza papa019 (#2758) üzenetére


Sk8erPeter
nagyúr

"És például valahogy úgy hívnám meg a függvényeket, hogy szam_fv.osszeadas(), stb.
Tudom, hogy ha létrehoznék egy class-t, akkor abba tudnék függvényeket tenni, de én csak szimpán a függvényeket szeretném csoportokba rendezni..."

Most megválaszoltad magadnak, akkor mi a kérdés? :DDD
Miért nem jó neked az osztály? Pont az kell neked.

Egyszerű példa:

function Valami(){

this.elso = function(){
// ...........
}

this.masodik = function(arg){
// ...........
}

// ...........
}

var valami = new Valami();
valami.elso();
valami.masodik(1234);

Sk8erPeter

(#2760) papa019 válasza Sk8erPeter (#2759) üzenetére


papa019
senior tag

Egy kicsit belekeveredtem a dologba... :B
Köszönöm a segítséget. :R
Valahogy éreztem, hogy nagy marhaságot fogok kérdezni... :(

[ Szerkesztve ]

(#2761) Sk8erPeter válasza papa019 (#2760) üzenetére


Sk8erPeter
nagyúr

Szívesen! :) Amúgy nem kérdeztél marhaságot, csak úgy tűnt, nem teljesen tiszta a kép.

Sk8erPeter

(#2762) papa019 válasza Sk8erPeter (#2761) üzenetére


papa019
senior tag

Pontosan ez volt a gond. :D
De most már tiszta a kép. :B

[ Szerkesztve ]

(#2763) papa019 válasza papa019 (#2762) üzenetére


papa019
senior tag

Tud valaki valami tuti biztos megoldást egy form elemeinek kiürítésére?
Arra gondolok, hogy amikor betöltöm az oldalam és elmentek egy formot, akkor amikor a következő alkalommal megnyitom ismét, akkor a korábban elmentett adatok megjelennek az input fieldekben, a megjelölt select elemek is ugyanazok. Ezeket szeretném eltüntetni.
Én az alábbi kódot találtam erre, ami egyszerűnek tűnik számomra:

function clear_form_elements(ele) {
$(ele).find(':input').each(function() {
switch(this.type) {
case 'password':
case 'select-multiple':
case 'select-one':
case 'text':
case 'textarea':
$(this).val('');
break;
case 'checkbox':
case 'radio':
this.checked = false;
}
});
}

Viszont ezzel több problémám is van. A jQuery chosen pluginja nem működik, ha használom. Egyszerűen nem jelenít meg semmit a select listában a plugin.
Emellett az input fieldek körül megjelenik egy halvány vörös színezet.
Nem jövök rá, hogy ez miért lehet... :(((

A függvényt egyébként az alábbi módon hívom meg, mielőtt megjelenne maga a form egy jquery dialogban.

clear_form_elements(document.getElementById('add_category_form'));

Illetve a jQuery chosen plugin meghívása előtt töltök adatokat a megfelelő select mezőkbe, szóval nem az a gond, hogy üresek a mezők.

[ Szerkesztve ]

(#2764) Sk8erPeter válasza papa019 (#2763) üzenetére


Sk8erPeter
nagyúr

"Arra gondolok, hogy amikor betöltöm az oldalam és elmentek egy formot, akkor amikor a következő alkalommal megnyitom ismét, akkor a korábban elmentett adatok megjelennek az input fieldekben, a megjelölt select elemek is ugyanazok."
Gondolom szerveroldalon kitölteted ismét. Akkor a szerveroldali kódot kellene módosítanod első körben, hogy üresen kapd meg a formot... vagy nem tudom, mire gondolsz, de alapvetően egy formnak teljesen üresnek kell lennie, hacsak ebbe valami nem szól bele, pl. az, hogy PHP-val kitöltöd előre. Bár egy elmentett formnál még jó, hogy szerkesztéskor így viselkedik...ahogy kell.

Amiről beszéltél, arról tudsz feltenni valami példakódot jsFiddle-re szemléletetésként?
Főleg ezt a vörös színezetet nem vágom.....feltételezem, ez valami validációs kód miatt kerül köré, mivel üres lett a form adott fieldje....

clear_form_elements(document.getElementById('add_category_form'));
Miért ragaszkodsz még mindig a plain JavaScripthez, ha jQuery-t használsz? :)

clear_form_elements($('#add_category_form'));
Ha már...

Magára a chosen plugin használatára is mutathatnál példát szintén jsFiddle-ön keresztül, hogy ne nekünk kerüljön időbe, hogy összeállítsunk egy demót.

[ Szerkesztve ]

Sk8erPeter

(#2765) papa019 válasza Sk8erPeter (#2764) üzenetére


papa019
senior tag

A lényeg, hogy nem PHP-vel töltöm ki a formot, hanem olyan, mintha a böngészőm megjegyezné a field tartalmát és az ismét megjelenne a következő kitöltéskor. Ha abban tudsz segíteni, hogy ezt hogyan tudom megakadályozni, nekem az is jó a form "kiürítése" helyett. :B
A piros "szegély": [link]
Oh most esett le, hogy a required paraméter be van állítva erre a field-re. :B

jsFiddle-ön egy nagyon alap kód ehhez: [link]

A chosen meghívása gyakorlatilag ennyi:
$('.category').load('category_load.php', function() {
$('.category').chosen();});

Ez nem ehhez a formhoz kell, ezért nincs "category" class a példakódban.

[ Szerkesztve ]

(#2766) Sk8erPeter válasza papa019 (#2765) üzenetére


Sk8erPeter
nagyúr

Ja értem, tehát akkor egy jQuery UI Dialogot dobálsz fel, és ott maradnak meg a formelemek.
Akkor ezek szerint PHP-hoz nincs köze, azt hittem, arról van szó, de ezek szerint ÚJ kategória hozzáadására szolgáló formon jön elő a gond.

Ha jól értem, akkor a kérdésed igazából már csak arra irányul, hogy miért mentődnek el a mezők, a többi megoldódott akkor, nem? :D Ezt az elmentés-problémát minden böngészőben tapasztalod? Mert amúgy látszólag teljesen jól működik a kódod, amit belinkeltél. Vannak olyan extensionök/pluginek böngészőkhöz, amik elmentik az űrlap tartalmát, akár még az is beleszólhat... vagy ha van valami scripted az oldalon, ami ezért az elmentésért, visszaállításért felelős.
Nálad itt, a jsFiddle-ön is "elmenti" az értékeket? (Ezt a böngésző-kiegészítő esetleges megléte miatt kérdezem.)

[ Szerkesztve ]

Sk8erPeter

(#2767) papa019 válasza Sk8erPeter (#2766) üzenetére


papa019
senior tag

Igen, minden más probléma megoldódott. :C
Fiddle-ön nekem nem jegyzi meg a szöveg mező tartalmát... :(
Akkor a kódom sajátossága lehet ez, ott nézelődjek, miért lehet?

(#2768) Sk8erPeter válasza papa019 (#2767) üzenetére


Sk8erPeter
nagyúr

Nekem sem jegyzi meg, de ez így normális. :D
Hát így ennyiből fogalmam sincs, mi lehet az oka, ha itt nem akarod feltüntetni az oldalt, amin ez fent van, küldd el privátban, ha gondolod, és akkor ránézek, hátha sikerül megtalálni a probléma okozóját.

Sk8erPeter

(#2769) Sk8erPeter válasza Sk8erPeter (#2768) üzenetére


Sk8erPeter
nagyúr

Rájöttem, hogy végül is az a böngésző (!) normális viselkedése, hogy megjegyzi a kitöltött formelemeket, mert tulajdonképpen alapból a dialógust csak eltünteted akkor, amikor bezárod, nem pedig törlöd, és létrehozod újra a következő megnyitáskor.
Ez korábban nem jutott eszembe, pedig a jQuery UI Dialog modal form példájában is látható, hogy a formelemeket "üríti" a bezáráskor:

close: function() {
allFields.val( "" ).removeClass( "ui-state-error" );
}

Az allFields-ben meg benne van a name, email, password mező is.
Ezt a kódot tehát felhasználhatod hasonló célokra. :)

Sk8erPeter

(#2770) papa019 válasza Sk8erPeter (#2769) üzenetére


papa019
senior tag

Köszönöm. :R
A fent említett sorra hibaüzenetet kapok:

ReferenceError: allFields is not defined
[Break On This Error]

allFields.val( "" ).removeClass( "ui-state-error" );},

Természetesen a dialog close paraméteréhez írtam, ahogy nálad is szerepel.
De ez alapján a gondolatmenet alapján majd próbálkozom. :R

[ Szerkesztve ]

(#2771) Sk8erPeter válasza papa019 (#2770) üzenetére


Sk8erPeter
nagyúr

Mivel gondolom Te nem is deklaráltál és definiáltál allFields változót. :D

Itt menj rá a "View Source"-ra, ott láthatod, milyen kódot alkalmaz.
Még a függvények előtt így kezdi:

var name = $( "#name" ),
email = $( "#email" ),
password = $( "#password" ),
allFields = $( [] ).add( name ).add( email ).add( password ),
tips = $( ".validateTips" );

Sk8erPeter

(#2772) Muton


Muton
addikt

Heló!

kérnék egy kis segítséget :)

vagy két listám (pl list1 = {a,b,c,d}, list2 = {c,d,e,f}, benne objektumok id és egy date propertivel. azt szeretném elérni, hogy egy harmadik listába merge-öljem a két listát, úgy, ahogy benne legyen a,b,c,d,e,f, de c és d, ami mindkettőbe benne van (ami nem név alapján, hanem azonos id alapján derül ki, tehát a listákba csak a-k vannak) az újabb kerüljön bele.

Muton#2316 - $z@r a drop >_<

(#2773) Sk8erPeter válasza Muton (#2772) üzenetére


Sk8erPeter
nagyúr

jQuery-vel halál egyszerű:

var list1 = {
a: 'asd',
b: 'bla',
c: {
id: 2,
date: '2012-07-26 15:05'
},
d: 'qweqweqw'
}, list2 = {
c: {
id: 666,
date: '1990-01-01 03:05'
},
d: 'újabb',
e: 'iwoeru',
f: 'lékdfgklj'
},
list3 = jQuery.extend(list1, list2);

Chrome Developer Tools konzolon az eredmény:

Merge two objects with jQuery

[ Szerkesztve ]

Sk8erPeter

(#2774) Muton válasza Sk8erPeter (#2773) üzenetére


Muton
addikt

érik már egy-két söröd :))
köszi!

Muton#2316 - $z@r a drop >_<

(#2775) Sk8erPeter válasza Muton (#2774) üzenetére


Sk8erPeter
nagyúr

:DD
Szívesen! :)

Sk8erPeter

(#2776) Soak


Soak
veterán

Sziasztok !

Ezzel csinálok egy mobilos felületet iOS-re : http://web20boom.com/web/touch.php . Nagyon egyszerű és jól érthető számomra, viszont egy valamiben elakadtam. Ha betöltöm az index.php-t akkor automatikusan átirányít így :

var myTouch;
$(document).ready(function () {
myTouch = jsTouch.init('myTouch', { width: 320, page: 'pages/sign_in.php' } );
jsTouch.resize();
});
// prevent default scroll
document.addEventListener('touchmove', function (e) { e.preventDefault(); }, false);

Ezek után a linkekkel lépés így történik :

<a class="button back" onclick="jsTouch.loadPage('pages/home.html', { transition: 'slide-right' });">Back</a>

.

A probléma amit nem tudok megoldani, az az ,hogy van a sign_in page-m :

<div class="toolbar">
<h1>Sign In</h1>
<a class="button back" onclick="jsTouch.loadPage('pages/home.php', { transition: 'slide-right' });">Back</a>
</div>
<div class="content">
<form id="lform" name="lform" method="post" target="lframe" action="pages/sign_in_form.php">
<ul class="rounded">
<li>
<div class="label">Email</div>
<div class="field"><input type="email" name="e_mail" value="" autocapitalize="off"></div>
<div class="clear"></div>
</li>
<li>
<div class="label">Password</div>
<div class="field"><input type="password" name="password" value="" autocapitalize="off"></div>
<div class="clear"></div>
</li>
</ul>
<div style="text-align: center">
<a href="javascript: document.getElementById('lform').submit();" class="button-green" style="width: 270px">Sign In</a>
<br><br>
<iframe name="lframe" style="width: 1px; height: 1px;" frameborder="0"></iframe>
<br><br>
</div>
</form>
</div>

Ez az az oldal kezeli le a formot :

<?php
if (isset($_POST)) {
$e_mail = trim($_POST['e_mail']);
$password = trim($_POST['password']);
$found_user = User::authenticate($password, $e_mail);
if ($found_user) {
$message = "Sign In successful.";
$session->login($found_user);
} else {
$message = "Email or password is invalid.";
}
}
?>

Azt szeretném elérni, hogy ha lemegy a beléptetés sikeresen akkor irányítsa át a usert egy megadott lapra.

(#2777) Sk8erPeter válasza Soak (#2776) üzenetére


Sk8erPeter
nagyúr

Ennyiből legalábbis úgy tűnik, hogy maga a beléptetés nem AJAX-szal történik, hanem hagyományos oldalfrissítéssel, nem? Akkor tulajdonképpen magának az átirányításnak mi köze a JavaScripthez ebben az esetben? Miért nem a PHP-fájlban oldod meg, egy header() hívással?

Sk8erPeter

(#2778) Soak válasza Sk8erPeter (#2777) üzenetére


Soak
veterán

Azért mert ugyan átmegy, de kiesik ebből az egész myTouch div-es dologból. Tehát csak szimplán formázás nélkül behozza a page-t. Amikor meg a gombokkal navigálok akkor nem megyek el az index pageről csak a myTouch tartalmát manipulálom, legalábbis ha jól értem az elvet.

(#2779) Sk8erPeter válasza Soak (#2778) üzenetére


Sk8erPeter
nagyúr

Eleve nem értem a dolgot, kezdjük az elején.
Bejelentkezési kísérletnél átirányítod a feldolgozást a pages/sign_in_form.php fájlba, mert ezt adtad meg az action attribútumban.
Normális bejelentkeztetés így néz ki:

1.) form ->
2.) submit gombot megnyomja a felhasználó ->
3.) átirányítás a feldolgozó fájlba (nálad ez a sign_in_form.php, ez OK) ->
4.) a feldolgozó fájlban a formban átadott adatok megvizsgálása, validálása ($_POST) ->
5.) ez alapján eldönteni, hogy bejelentkezett-e a felhasználó, vagy sem ->
6.) ha igen, megfelelő session-változókat beállítani, ha nem, akkor erre vonatkozó figyelmeztetést beállítani (akár ezt is lehet sessionnel persze) ->
7.) VISSZAIRÁNYÍTANI az eredeti oldalra, ahonnan a kérés érkezett, vagy sikeres bejelentkezés esetén ÁTIRÁNYÍTANI megadott oldalra (pl. ha egy oldal megtekintéséhez authentikáció szükséges, átirányítod innen a felhasználót a bejelentkező oldalra, beállítasz az URL-be egy destination=/innen/jött/a/kérés $_GET-paramétert, és sikeres bejelentkezés után erre az /innen/jött/a/kérés oldalra irányítod át; vagy ha a felhasználó eleve a bejelentkező oldalra érkezett közvetlenül, akkor sikeres bejelentkezés után átirányítod a kezdőlapra, vagy egy másik default oldalra).
Természetesen minden oldal elején ellenőrzöd, a felhasználó bejelentkezett-e már (pl. létezik-e adott session-változó; persze ahol abszolúte nem szükséges a bejelentkezett állapot, ott nem kötelező, de jellemző az, hogy már az elején eldöntöd, anonim vagy bejelentkezett felhasználóról van-e szó, minden oldalon).

Nálad úgy látom, a visszairányítás/átirányítás lépés elmarad.

[ Szerkesztve ]

Sk8erPeter

(#2780) Soak válasza Sk8erPeter (#2779) üzenetére


Soak
veterán

Tisztában vagyok azzal hogyan kéne kinéznie a dolognak. Desktop platformon már sokkal bonyolultabban megoldottam (mármint a password hashelésétől kezde pár dolgot implementáltam) .
A problémám az volt, hogy a myTouch div-et manipuláljam, de azóta leesett, hogy a gondolat menet alapból hibás mivel nem hagyja el az oldalt, ezért nem is tudja újra ellenőrizni, hogy be van-e jelentkezve.

(#2781) Sk8erPeter válasza Soak (#2780) üzenetére


Sk8erPeter
nagyúr

Jó, én nem értem a dolgot, mert annyira homályosan írod (legalábbis számomra teljesen ködös), de a lényeg, hogy Te érted. :)

Sk8erPeter

(#2782) Soak válasza Sk8erPeter (#2781) üzenetére


Soak
veterán

Ha megnézed akkor úgy működik a dolog (azért szúrtam be az elején, hogy miként történik az átirányítás az index.php-ről, neked biztos nem új, de én még nem találkoztam így használva JS-el) , hogy a myTouch div tartalmát manipulálod a navigációs gombokkal, kb mint egy iframe. Na most ha innen elirányítottam php-vel egy oldalra akkor az nem formázva jelent meg, mivel nem a myTouch div-ben volt benne - az index.php-n belül - ezért nem is volt soha hozzácsatolva a css file meg hasonlók. De tovább gondolva az egészet, az átirányitást php-vel kell megoldani, csak egyszerűen lesz egy ugyanilyen oldal - mint az index.php - ami keretül szolgál a többinek, viszont ezt csak bejelentkezett userek láthatják. És majd a bejelentkezett tartalmakat is ezen "keresztül" lehet elérni.

(#2783) Sk8erPeter válasza Soak (#2782) üzenetére


Sk8erPeter
nagyúr

Ha megnézed az általad belinkelt oldalt, akkor az Overlays szekción belül van egy olyan, hogy "Question with buttons" - erre a felpattanó overlay-re kellene raknod a bejelentkező formot, AJAX-szal elküldeni az adatokat szerveroldalra (úgy, hogy adatküldés közben megjelenítesz egy töltődést jelző ikont), majd a választól függően eldönteni, hogy akkor bejelentkezett-e sikeresen, vagy sem. Aztán ennek megfelelően frissíteni a tartalmat. Így nem lenne szükség semmiféle átirányításra, és így lenne szép megoldás.

[ Szerkesztve ]

Sk8erPeter

(#2784) v2izzy


v2izzy
tag

Hello!
Nemrég felmerült egy olyan gondom, hogy el akartam érni CSS stílus értékeket JS-el de úgy hogy nem egy meglévő elem stílusát vizsgálom. Meg is találtam hogy el lehet érni, de elég hosszadalmas mire hozzá lehet jutni a kívánt értékhez. Keresgettem jQuery-ben valami szép megoldást rá (vagy nem jQuery-ben), de nem nagyon talátam. Úgyhogy csináltam egy kis plugin-t, ami a beadott selector szerint megkeresi az ahhoz tartozó stílusokat. Akinek van kedve nézze meg és lehet közreműködni is akár, mert lehet még javítani/plusz funkciókat bele tenni. :)

+ részben ennek segítségével elkészült egy sportversenyeknél használt csoport és bracket készítő bundle-öm. Akinek netán ilyenre lenne szüksége. :)

</self-reklám> :D

http://flic.kr/ps/MuuJU | @gerhard_berger | https://github.com/gerhardberger

(#2785) Sk8erPeter válasza Sk8erPeter (#2651) üzenetére


Sk8erPeter
nagyúr

Mivel már más is megoldotta az applicationök, extensionök listájának megmutatását (nem is meglepő módon), ezért ez ajánlható: [link], tehát sztem nem fogok szarakodni a sajátom tökéletesítésével. :D (nem mintha eddig túl sok energiát szántam volna rá)
Bár ez annyival kevesebbet tud, mint az enyém, hogy nincs keresőmezője, amivel szűkíteni lehet az applicationökre, illetve extensionökre. Meg nálam teljesen külön szekcióban vannak a letiltott, ill. engedélyezett applicationök, illetve extensionök.
Meg annyival is kevesebbet tud, mint az enyém, hogy az ikonnál elérhető popupban csak az alkalmazások listáját mutatja, az extensionöket nem, az enyémben meg letiltható már egyből a lenyíló menüből is az extension. Szóval ha valakit még érdekel, még megmutathatom az enyémet is, bár most került bele egy hiba, aminek az okát se időm, se kedvem nem volt kideríteni, de gondolom nem nagy szám kijavítani.

[ Szerkesztve ]

Sk8erPeter

(#2786) Sk8erPeter válasza v2izzy (#2784) üzenetére


Sk8erPeter
nagyúr

Mindkettő elég hasznosnak tűnik, gratula.
Nem nagyon olvastam át a doksit, de jól értem, hogy az első plugin arra való, hogy CSS-fájlokban kotorásszon adott osztályokra, azonosítókra definiált stílusokra?

Sk8erPeter

(#2787) v2izzy válasza Sk8erPeter (#2786) üzenetére


v2izzy
tag

Igen arra való. Kiválaszthatod, hogy melyik fájlban/fájlokban keressen, mert így gyorsabb lehet és csak ami selector-t a jQuery átad ($(selector).styled()), azt megkeresi és visszaadja. Még lehetne akár bővíteni olyannal hogy legyen egy .set() is, tehát lehessen változtatni a CSS-t.
Viszont amiben nem voltam biztos, hogy ha van több fájl és azokban valamelyik selectorhoz tartozó stílus többször is szerepel, akkor melyiket tartsam meg? Most úgy csinálja, hogy mindig ha a következő fájlban lévő felülírja a már szereplő stílusokat. Ez logikus, de nem tudom, hogy ez a legjobb megoldás.

[ Szerkesztve ]

http://flic.kr/ps/MuuJU | @gerhard_berger | https://github.com/gerhardberger

(#2788) Sk8erPeter válasza v2izzy (#2787) üzenetére


Sk8erPeter
nagyúr

Ja igen, ezen a .set() metóduson akkor is meglepődtem egy kicsit, hogy hogyan is lenne ez implementálva. Hogyan állítanád át a stílusokat? A fájl módosításához már nyilván szerveroldali programozás is szükséges. Anélkül meg csak kliensoldalon lenne érvényes a dolog, aminek meg így első blikkre nem tudom, mi a konkrét haszna.
Egyébként a megvalósítás szempontjából nekem az tűnne logikusnak, hogy az épp kiválasztott fájlnál történjen meg a módosítás, a többiben ne matarásszon, mert az nem biztos, hogy a kívánt viselkedést eredményezné.

[ Szerkesztve ]

Sk8erPeter

(#2789) v2izzy válasza Sk8erPeter (#2788) üzenetére


v2izzy
tag

Nem kell hozzáférni a css fájlhoz, én sem abból olvasom ki. A stíluslapok betöltődnek a DOM-ba és innen könnyen lehet kezelni őket, szóval egy értékadás nem a fájlt írja át hanem csak a DOM-ba. A .set()-et azért tartanám jónak, mert pl. olyan előnye (persze ez valahol lehet hátrány is) van a jQuery-s .css()-el szembe, hogy ez azután is igaz az egyező selector-ú elemekre miután miután a művelet végrehajtódott. Sebességbeli különbséget nem tudok, de kíváncsi lennék, meg kellene nézni. Plusz így nem tesz a html kódba egy ronda style attribútumot. :D

http://flic.kr/ps/MuuJU | @gerhard_berger | https://github.com/gerhardberger

(#2790) Sk8erPeter válasza v2izzy (#2789) üzenetére


Sk8erPeter
nagyúr

"olyan előnye (persze ez valahol lehet hátrány is) van a jQuery-s .css()-el szembe, hogy ez azután is igaz az egyező selector-ú elemekre miután miután a művelet végrehajtódott."
:F Ezt nem értem. Miért, a .css() miért ne lenne igaz a "művelet" végrehajtása után? Milyen "műveletre" gondolsz?
Vegyünk egy példát, van egy ilyened:
<div class="alma">ASD</div>
Nyomatsz egy ilyet:
$('.alma').css('color', 'red');

Ez ennek végrehajtása után is igaz lesz.... persze fogalmam nincs, mire gondolhattál...

Sk8erPeter

(#2791) Karma válasza Sk8erPeter (#2790) üzenetére


Karma
félisten

A .css() a már meglévő elemekhez ad stílust, de amik majd csak a jövőben jönnek létre, arra nem tudod ráapplikálni a stílusokat csak a .css() használatával.

.on()-nal meg ilyesmivel kéne varázsolni.

“All nothings are not equal.”

(#2792) v2izzy válasza Sk8erPeter (#2790) üzenetére


v2izzy
tag

Lehet kicsit értelmetlenül fogalmaztam de arra gondoltam amit Karma írt. :)

http://flic.kr/ps/MuuJU | @gerhard_berger | https://github.com/gerhardberger

(#2793) Sk8erPeter válasza v2izzy (#2792) üzenetére


Sk8erPeter
nagyúr

Jaaa értem, tegnap nem esett le. Mondjuk abból, ahogy leírtad, nem is csoda. ;] :P Kösz, Karma.
Hogyan valósítottad meg, hogy a jövőben létrejövő elemekre is igaz legyen? Az .on()-nal, ahogy Karma említette? (most nincs időm átbogarászni a kódot, de kíváncsi vagyok)
Viszont így megint csak kérdés, hogy a .set()-nek ilyenkor mit kellene megvalósítania... az lenne a logikus ezek alapján, hogy akkor minden egyező selectorú elemre igaz lesz, hogy melyik fájlban van definiálva maga a stílus, az itt szerintem totál irreleváns.

Sk8erPeter

(#2794) Karma válasza Sk8erPeter (#2793) üzenetére


Karma
félisten

A DOM CSS-t használja, így a CSS szabályokat módosítja a DOM-on belül, nem konkrétan az elementeket manipulálja.

Szerintem nagyon frankó gondolat :)
(Bár inkább classokat használnék :P)

Egyébként a set se feltétlen bonyolult, hiszen a rule-ok szövegét lehet szerkeszteni is. Mondjuk jó kérdés, hogy a specificitással mi lesz.

[ Szerkesztve ]

“All nothings are not equal.”

(#2795) v2izzy válasza Karma (#2794) üzenetére


v2izzy
tag

Igen, nem bonyolult a set. Így gondoltam. És, bár logikus, de tényleg gyorsabb így mint a jQuery-s .css(). Most a példában 1000db-on csinál, de kipróbáltam 40k-val és ott láthatóan gyorsabb. :)

http://flic.kr/ps/MuuJU | @gerhard_berger | https://github.com/gerhardberger

(#2796) Muton


Muton
addikt

Hello!

Jquery Mobile-al kapcsolatban kérnék segítséget.

van egy html-em, benne egy "sima" javascript, abban egy var userid; és egy login(userid); fv.

hogy tudok egy jqm-os scriptben értéket adni egy nem jqm-es változónak, és fv-t meghívni?
illetve fordítva: a sqm használjon egy nem jsm-es változót

Mert ezt szeretném megcsinálni, csak loginra:

<!DOCTYPE html>
<html lang="en">
<head>
<script type="text/javascript" src="http://code.jquery.com/jquery-1.6.4.min.js"></script>
<script type="text/javascript" src="http://code.jquery.com/mobile/1.0/jquery.mobile-1.0.min.js"></script>
<script type="text/javascript" src="http://dev.jtsage.com/jquery.mousewheel.min.js"></script>
<script type="text/javascript" src="http://dev.jtsage.com/cdn/simpledialog/latest/jquery.mobile.simpledialog.min.js"></script>
</head>
<body>
<script type="text/javascript>
var userid = "";
function login(param){
// call login service...
}
<script>
<script type="text/javascript">
$(document).delegate('#simplestring', 'click', function () {
$(this).simpledialog({
'mode': 'string',
'prompt': 'What do you say?',
'cleanOnClose': true,
'buttons': {
'OK': {
click: function () {
$('#simplestringout').text($('#simplestring').attr('data-string'));
// itt szeretnék értéked adni a userid-nek a textbox sözvegével és meghívni a login(userid)
}
},
'Cancel': {
click: function () {
console.log(this);
},
icon: "delete",
theme: "c"
}
}
})
});
</script>
<a href="#" id="simplestring" data-role="button">Open Dialog</a>
</body>
</html>

Muton#2316 - $z@r a drop >_<

(#2797) Muton válasza Muton (#2796) üzenetére


Muton
addikt

UP :B

senki sem tud js-es változónak értéket adni jqm-ban?

Muton#2316 - $z@r a drop >_<

(#2798) Sk8erPeter válasza Muton (#2796) üzenetére


Sk8erPeter
nagyúr

http://dev.jtsage.com/jQM-SimpleDialog/demos/string.html

Ez alapján:
userid = $('#simplestring').attr('data-string');

továbbírva a kódodat:

'OK': {
click: function () {
$('#simplestringout').text($('#simplestring').attr('data-string'));
// itt szeretnék értéket adni a userid-nek a textbox szövegével és meghívni a login(userid)
userid = $('#simplestring').attr('data-string');
login(userid);
}
},

Szemléltetés kedvéért rákerestem, van már a témában jsfiddle-demó, ezt továbbírtam egy kicsit, és itt a végeredmény:

http://jsfiddle.net/Sk8erPeter/YmG8A/13/

[ Szerkesztve ]

Sk8erPeter

(#2799) Muton válasza Sk8erPeter (#2798) üzenetére


Muton
addikt

köszi!
holnap normálisan megköszönöm, csak most húznom kell kórházba :DDD

Muton#2316 - $z@r a drop >_<

(#2800) Sk8erPeter válasza Muton (#2799) üzenetére


Sk8erPeter
nagyúr

A "köszi!" szerintem elég normális megköszönés. :DDD
Szívesen!

Sk8erPeter

Copyright © 2000-2024 PROHARDVER Informatikai Kft.