jQuery topic - Szoftverfejlesztés fórum

üzenetek

hozzászólások


trisztan94
(őstag)
Blog

Van egy elemem, ami oldalbetöltéskor nem létezik, valamikor a jövőben lesz létrehozva (lazy loados). Arra az elemre szeretném a Sk8erPeter által linkelt MutationObserver-t rákötni, viszont elszáll egy olyan hibával, hogy a megadott elem (nyilván document.getElementById-val hivatkozva) nem egy létező node.

Ha jól emlékszem, lehet jQuery-vel delegálni, viszont arra nem emlékszem, hogy hogyan lehetne azt megoldani, hogy bizonyos function-ök csak akkor legyenek parse-olva, amikor az elem létezik.

Próbáltam:

$('#elem').load(function(){});
$('#elem').ready(function(){});

Viszont a callbackban lévő kódra ugyanúgy kapom a hibát.

Valakinek van esetleg ötlete erre?


martonx
(veterán)

Egyszerű, csak akkor kösd rá a MutationObserver-t, amikor már létezik, azaz amikor a LazyLoad már betöltötte az elemet :)


trisztan94
(őstag)
Blog

Az a baj, hogy nem tudom, hogy pontosan hol, hogyan, és mikor jön létre az elem, nincs hozzáférésem ahhoz a script fájlhoz. Annyit tudok, hogy majd valamikor a jövőben létrejön az elem valahol.


Sk8erPeter
(nagyúr)

Ez esetben szerintem kénytelen vagy a jövőben létrejövő elem szülőelemére is aggatni egy MutationObservert, és figyelni a gyerekelemek változását, hogy mikor kerül hozzáadásra, és amikor a várt elem létrejöttét detektálod, akkor csapod hozzá a további MutationObservereket, ahogy martonx írta. (A szülőelemen childList vagy subtree attribútumok vmelyikével, most telóról vagyok, nem tudom kipróbálni.)


tboy93
(nagyúr)
Blog

Sziasztok! Hogyan tudom kideriteni a jQuery segitsegevel egy objektumrol, hogy az egy masik objektumbol szarmazik-e?


fordfairlane
(veterán)

Nem jquery specifikus:

<script>
var nagyszulo = {};
var szulo = Object.create(nagyszulo);
var nemszulo = {};
var gyerek = Object.create(szulo);

console.log(nagyszulo.isPrototypeOf(gyerek)); // true
console.log(szulo.isPrototypeOf(gyerek)); // true
console.log(nemszulo.isPrototypeOf(gyerek)); // false
console.log(gyerek.isPrototypeOf(gyerek)); // false
</script>


tboy93
(nagyúr)
Blog

ezer koszonet :R


kw3v865
(senior tag)

Sziasztok!

A következő kérdésre keresem a megoldást: adott ez a GET (a számunkra most lényegtelen részeket kiszedtem belőle):

$.ajax('http://xxx', {
type: 'GET',
data: {
sortBy: 'id2',
}
}
)

Ez így tökéletesen működik, azonban, ha.
sortBy: 'id2+D',

Akkor ezt a hibát dobja:

java.lang.ClassCastException: java.lang.Double cannot be cast to org.opengis.feature.type.AttributeDescriptor
java.lang.Double cannot be cast to org.opengis.feature.type.AttributeDescriptor

És ez lesz belőle: sortBy=id2%2BD

Tehát a '+D'-vel van baja.
Ha ezt rendesen URL-lel hívom meg a böngészőbe begépelve (tehát nem ajax-szal), akkor pedig tökéletesen működik.

Van valami ötletetek mi okozhatja ezt, és mi lenne rá a megoldás?


martonx
(veterán)

Elég nyilvánvalóan a 'id2+D' szerver oldalon Double-é szeretne fodulni, miközben ez ugyebár nem egy szám, hanem egy string :) Hogy mit is szeretnél szerver oldalon kapni, és miért azt rád bízom, ha az a cél, hogy stringként jelenjen meg, akkor gondolom url escapelni kellene a stringedet, vagy valami ilyesmi.
Igaziból a problémádnak semmi köze a jqueryhez.


kw3v865
(senior tag)

Na meg is találtam már a megoldást: a '+'-t kellett kiváltanom egy szóközzel. :C


martonx
(veterán)

Igen, gyakran nem árt, elolvasni, és értelmezni a hibaüzeneteket :B


biker
(nagyúr)
Blog

Lenne egy kis segítségkérésem, fullcalendar ügyben.
A support kicsit nehézkes, és bár adnak tanácsokat, egy ponton elakadtam.
Az erőforrásokat nem normál módon kell betöltenem, hanem funkcióként, mert különben egy megjelenítési bugba ütközünk, ehhez a gyári doksi ez
[link]
Ebből is kellene az a verzió, ami start-end időpontot is hozzáad, így valahogy
resources: function(fetchInfo, successCallback, failureCallback) {
somethingAsynchonous({
start: fetchInfo.start,
end: fetchInfo.end,
timeZone: fetchInfo.timeZone
}, function(resources) {
successCallback(resources);
});
}

});

Viszont egy korábbi debugolás eredményeképpen extra késleltetés is hozzá lett adva a betöltéshez, és így néz ki a kód, amit szintén a support küldött

resources: function(fetchInfo, successCallback, failureCallback) {

const request = new Request('myresources.php'); //lekéri a naptáramat

fetch(request)
.then(response => response.json())
.then(data => {successCallback(data)})
.then(function() {
// workarounds to fix rendering issues after resources are loaded
calendar.render()
calendar.changeView(calendar.view.type)
})
.catch(function(err) {
console.log('Fetch error', err);
failureCallback()
});

},

Namost ide hogy illesszem be a start-end paramétereket, hogy megkapja változóként?
Nem vagyok egy js/jquery ninja :) Amit eddig tippeltem, nem volt jó

[ Szerkesztve ]


biker
(nagyúr)
Blog

Na, csak ki kellett írjam, és megvan a jó verzió

var resourceUrl = 'myresources.php';
resourceUrl += '&start=' + fetchInfo.start.toISOString();
resourceUrl += '&end=' + fetchInfo.end.toISOString();
resourceUrl += '&timeZone=' + fetchInfo.timeZone;

const request = new Request(resourceUrl);

Érdekes, hogy ez meg nem működött

const request = new Request('myresources.php?start=' + fetchInfo.start.toISOString() + '&end=' + fetchInfo.end.toISOString());

Túl akartam egyszerűsíteni?


indigo
(aktív tag)

Sziasztok!
A következőkben kérném a segítségeteket.
Egy olyan billentyűzet gyakorló kis programot írok html-css-jquery alapon, amellyel kisgyerekek gyakorolhatnák a gombok leütését. A program a Play gomb megnyomása után beolvas egy sztringet, majd megjeleníti annak első karakterét egy kis téglalapban. Ekkor le kellene nyomni azt a karakter a billentyűzeten és az kiíródik az oldalra egy divbe. Valamint a kis téglalapban megjelent karakter is kiíródik az oldalon egy másik divbe. Pause gombbal megszakíthatom a feladatot.
Sajnos már itt hibákba ütköztem. Ha egyesével begépelgetem a karaktereket, akkor végig fut rendesen a beolvasás-kiírás a divekbe. Ha viszont menet közben megszakítom a feladatot a Pause gombbal, akkor a következő vagy utáni alkalommal már nem fogad el semmilyen bevitelt, egyből a sztring teljes tartalmát jeleníti meg. Példa.
A fejlettebb változat ellenőrzésekor rájöttem, hogy a sztring i-edik eleme az utolsó karakternél undefined. Valamint, ha újra kezdem a feladatot, akkor az i-edik elemnek két értéke lesz ugyanazon betűnél. Harmadjára kezdve három értéke lesz, stb.
Minden segítséget megköszönök.


oOKitsuneOo
(tag)

-

[ Szerkesztve ]


Agostino
(addikt)
Blog

sziasztok

eléggé leült a topik de hátha még valaki látogatja. [ezzel a kis dropdown] menüvel szenvedek egy ideje, nem tudom miért makacsolja meg magát. az volna a lényeg, hogy szintenként lefele haladva specifikálhatom, hogy mi érdekel. az 1-4 kategória hibátlanul továbbpasszol, viszont az 5. szinten már nem veszi át a 4. szintben kiválasztott opciót, vagyis kettő megmaradt lehetőség helyett mind a létező négyet kihozza... ideális esetben Fagyasztott / Friss vagy Keresztbe / Hosszába párosnak kellene megmaradnia.


DrojDtroll
(addikt)

Sziasztok!

Van eszköz amely megmondja, hogy egy adott jquery verzióval melyik legfirsebb verzió kompatibilis?


biker
(nagyúr)
Blog

Üdv, létezhet az, hogy a $(document).one('ready', function () {.........
nem fut le ha a háttérben hívják meg?

Van egy kis script, ami szinkronizálna adatot, elküldött emailcím alapján lekérdez az adatbázisból több adatot, és visszaküldi a wordpressnek.
Írtam rá egy tesztet, megnyomok egy gombot, post-al elküldöm az emailt, visszajön az adat, illetve beírodik a wp-be
ha a wp-n fut le a háttérben a hívás, vagyis nem generál kimenetet a böngészőre, akkor a felhasználó szerint nem jön vissza az adat a wp-be

Létezhet hogy nem lesz "document ready" ha nincs kimenet? elég egy "ok" sor kiírás (a semmibe) vagy mi a megoldás?


biker
(nagyúr)
Blog

közben raktam naplózást mindenre is, valóban, ha böngészőből küldök post-al adatot, és ablakban nyílik meg a fogadó file, akkor lefut a script, és elküldi tovább az adatot, ha háttérben hívjuk meg akkor nem fut le

<script src="https://code.jquery.com/jquery-2.2.4.min.js" integrity="sha256-BbhdlvQf/xTY9gja0Dq3HiwQF8LaCRTXxZKRutelT44=" crossorigin="anonymous"></script>
<script>
$(document).one('ready', function () {
function submitForm() {
var data = {
'email-1': '<?php echo $newdata[0]['emailcim']; ?>',
'text-1': '<?php echo $newdata[0]['user_id']; ?>',
'text-2': '<?php echo $newdata[0]['user_ean']; ?>',
'date-1': '<?php echo date("Y-m-d", $newdata[0]['berlet_erv']); ?>',
'text-3': '<?php echo $newdata[0]['berlet_menny']; ?>'
};

jQuery.ajax({
url: 'https://www.**************l.hu/wp-admin/admin-post.php',
method: 'POST',
data: {
'action': 'submit_form_data',
'email-1': data['email-1'],
'text-1': data['text-1'],
'text-2': data['text-2'],
'date-1': data['date-1'],
'text-3': data['text-3']
},
success: function(response) {
// Sikeres válasz esetén itt kezelheted a választ
console.log("Sikeres adatküldés", response);
},
error: function(xhr, status, error) {
// Hiba esetén itt kezelheted a hibát
console.log("Adatküldés sikertelen", error);
}
});

jQuery.ajax({
url: 'https://*******************.hu/logger.php',
method: 'POST',
data: {
'action': 'submit_form_data',
'email-1': data['email-1'],
'text-1': data['text-1'],
'text-2': data['text-2'],
'date-1': data['date-1'],
'text-3': data['text-3']
},
success: function(response) {
// Sikeres válasz esetén itt kezelheted a választ
console.log("Sikeres adatküldés", response);
},
error: function(xhr, status, error) {
// Hiba esetén itt kezelheted a hibát
console.log("Adatküldés sikertelen", error);
}
});
}

submitForm(); // Az adatküldés indítása

});
</script>

Ez után van egy logger a php-ben:
$log=$_POST['test']." ".$_POST['user_emailcim']." >> ".$newdata[0]['emailcim']." >> ".date("Y-m-d", $newdata[0]['berlet_erv'])." >> ".$newdata[0]['berlet_menny']." >> ".$newdata[0]['user_id']." >> ".$newdata[0]['user_ean'];
file_put_contents("uploads/".microtime().".txt",$log);

ez menti a küldött adatokat ha a php lefutott, ugyanez van a logger.php-ben amit már a futó js hívna meg

Ha egy test.php-ből submitolok, akkor két log fileom lesz, adatokkal, ha háttérből (egy wp-n generált gomb, szintén jqueryvel küld adatot ide). akkor csak a php log íródik ki, minden adat helyes, de a document ready rész nem hívódik meg. Ezek szerint a háttérben generált oldal mivel nincs tartalom, nem generál document ready eventet sem?

[ Szerkesztve ]


DNReNTi
(őstag)

Nem vagyok benne 100% biztos, hogy ertem pontosan mi zajlik, de ha megis jol ertem, arrol van szo, hogy valami hatterfolyamatban nem fut meg a script-ed. Mivel a javascript a bongeszoben fut, igy ez termeszetes, nem is fog megfutni. HA jol ertem.


biker
(nagyúr)
Blog

akkor jól tippeltem, átírom...


emre33
(addikt)

Ezt inkább így kellene futtatni.....

$(document).ready(function(){

});

üzenetek