- Windows: mi történik valójában Leállításkor, Alvó módban és Újraindításkor?
- Gyenge Wi-Fi otthon? – a leggyakoribb hibák és megoldások
- Korábbi vezetője szerint 40 milliárd dollár kell az Intel versenyképességéhez
- Új, belépő szintű Radeont kapnak az OEM-ek
- Hamarosan találkozhat az USA és az Intel vezetője
- Szünetmentes tápegységek (UPS)
- Milyen videókártyát?
- Házimozi haladó szinten
- Kormányok / autós szimulátorok topikja
- Intel Core i5 / i7 / i9 "Alder Lake-Raptor Lake/Refresh" (LGA1700)
- AMD Ryzen 9 / 7 / 5 9***(X) "Zen 5" (AM5)
- Fujifilm X
- AMD Ryzen 9 / 7 / 5 7***(X) "Zen 4" (AM5)
- ASUS notebook topic
- Asztrofotózás
Hirdetés
Új hozzászólás Aktív témák
-
Sk8erPeter
nagyúr
válasz
Speeedfire #399 üzenetére
Akkor add meg RGB-ben.
Na, de nem szólok bele, ez igazából annyira nem is problémás.
-
Speeedfire
félisten
válasz
Sk8erPeter #398 üzenetére
Úgy is akartam, csak hexában adom meg.
Csak a css visszaadott értéke meg rgb.
Emiatt nem akart menni... -
Sk8erPeter
nagyúr
válasz
Speeedfire #397 üzenetére
Mondjuk sztem lehetnél konzekvens, hogy akkor már következetesen vagy hexában, vagy rgb-ben adod meg...
-
Speeedfire
félisten
válasz
Sk8erPeter #396 üzenetére
Az előbb megoldottam már, kértem is a törlését...
$(document).ready(function() {
$('.kor').click(function() {
var color = $(this).css('background-color');
if (color == 'rgb(0, 128, 0)') {
$(this).css('background-color', '#e5e5e5');
}
else {
$(this).css('background-color', '#008000');
}
});
}); -
Sk8erPeter
nagyúr
válasz
Speeedfire #394 üzenetére
Az if-nél a $(this)-ed szerintem nem jó.
Próbáld valahogy így (persze nem próbáltam ki, meg nem tudom, mi a célod, csak gyorsan leírtam, de talán jó):
$(document).ready(function () {
var circleBgColors = ['rgb(0,128,0)', '#e5e5e5', '#008000'],
$circleObj = $('.kor');
if ($circleObj.css('background-color') == circleBgColors[0]) {
$circleObj.css('background-color', circleBgColors[1]);
} else {
$circleObj.click(function () {
$(this).css('background-color', circleBgColors[2]);
});
}
}); -
Speeedfire
félisten
Kis segítséget szeretnék kérni ehhez:
$(document).ready(function() {
if ($('.kor').css('background-color') == 'rgb(0,128,0)') {
$(this).css('background-color', '#e5e5e5');
}
else {
$('.kor').click(function() {
$(this).css('background-color', '#008000');
});
}
});Konkrétan beszínezi a kört, de vissza már nem megy, akár hexa kódban adom meg a színt, akár rgb-ben. Mi lehet a gond vele? Console nem mond semmi hibát.
-
ubid
senior tag
Helló!
Akit érdekelne egy Jquery-Ajax képzés , kérem írjon privátba.
(helyszín nem kötött )
-
Speeedfire
félisten
válasz
Peter Kiss #390 üzenetére
Meg is lett. mouseup, mousedown.
martonx: A flash-en agyaltam én is, illetve a html5-ön. Viszont a flash-hez át kellene előtte konvertálni vagy nem? Simán betudom az asf-et állítani flashnek?
Ha jól tudom mjpeg-ben streamel a kamera.
Gyárilag is van valami web-es felület hozzá, csak nem tudom ott mivel ágyazták be... -
martonx
veterán
válasz
Speeedfire #389 üzenetére
gondolom silverlight vagy flash. Mivel silverlight a userek kb. 60%-ánál van csak (és jó eséllyel még ennyinek sem), inkább a flash-t javasolnám.
-
Peter Kiss
őstag
válasz
Speeedfire #389 üzenetére
Le lehet kezelni a nyomva tartást és az elengedést is.
-
Speeedfire
félisten
Az egér kattintásnál van olyan funkció, hogy nyomva tartom az egeret illetve, amikor elengedem?
Egy ip-kamerához kellene egy webes felületet csinálnom és így irányítani a kamerát vele. Nem akarom, hogy klikkelgetni kelljen a mozgatáshoz. Ha minden kötél szakad akkor esetleg, hogy ha fölé viszem vagy leveszem az egeret...
Illetve érdekes lenne, hogy szerintetek asf streaming-et mivel lenne érdemes beágyazni?
-
Speeedfire
félisten
válasz
Sk8erPeter #387 üzenetére
Már megoldottam a saját kódot, kicsit gány, de működik.
Majd egyszer elkezdem használni a jsbin-t, addig is...$(document).ready(function() {
$("#nav li a:not(#nav li ol li a)").mouseenter(function() {
$("#nav li ol").slideUp("slow");
$(this).parent().children("ol").slideDown("slow");
});
$("#nav li ol").mouseleave(function() {
$(this).slideUp("slow");
});
if ($("#nav ol li ol:visible")) {
$("#nav").mouseleave(function() {
$("#nav li ol").slideUp("slow");
});
}
}); -
Sk8erPeter
nagyúr
válasz
Speeedfire #386 üzenetére
A Superfish-nél megoldották azt is, hogy egy kis késleltetés után tűnjenek el az almenük, amire korábban rámentél, így nincs az az idegesítő jelenség, hogy mondjuk meg akarsz nyitni egy menüpontot, föléviszed az egeret a főmenünek, megnyílik az almenü, annak még egy almenüjét végre sikerül megtalálnod, afölé is viszed az egeret, de véletlenül mellétolod az egeret egy pixellel, és máris eltűnik az al-almenü, és akkor kezdheted a navigálást az elejétől.
Amúgy tényleg fasza a Superfish, én Drupalnál használom, van modul is hozzá. Mondjuk Drupalnál még annyiból is egyszerűbb a dolog, hogy ott még olyan nagyon konfigolgatnom sem kell (a legtöbb dolog beállítható grafikus felületen is), egy sor jQuery-kódot nem kell írnom, mert az generálódik, szóval csak engedélyezem, beállítom, mit jelenítsen meg Superfish-menü formájában, beállítom a megfelelő blokkokat is, és kész van. Most ezt csak azért mondtam el pluszban, mert írtad már korábban, hogy Te is használsz Drupalt.
===
Szerk.: amúgy ha továbbra is a sajátot szeretnéd megoldani, akkor rakd már fel jsbin-re vagy jsfiddle-re a mintakódot plíz, hogy ne nekünk kelljen tökölni vele.
-
Speeedfire
félisten
válasz
Sk8erPeter #385 üzenetére
Pedig már majdnem tökéletesre csináltam. Egyedül arra nem jöttem rá, hogy tudom akkor is eltüntetni az ol elemet, ha másik li a-ra megyek.
De megnézem ezt a superfish-t.$(document).ready(function() {
$("#nav li a").mouseenter(function() {
$(this).parent().children("ol").slideDown("slow");
});
$("#nav li ol").mouseleave(function() {
$(this).slideUp("slow");
});
});Jogos az aggodalom.
Csak én sem hittem volna, hogy ilyen egyszerűen meg lehet oldani. -
Sk8erPeter
nagyúr
válasz
Speeedfire #384 üzenetére
Használd ezt, és ne szopasd magad saját menüanimálós pluginek készítésével:
SuperfishMár nem merek belekezdeni sem a jsbin-en kód mutatásának, mert aztán tuti kiderül, hogy valami totál másra gondoltál...
Egyébként jó lenne, ha a kezdeti próbálkozásaidat Te is jsbin-re vagy jsfiddle-re tennéd fel, így kicsit gyorsabban menne a közös problémamegoldás.
Azt már csak tovább kellene alakítgatni, utána meg csak egy linket bedobni a megoldással, és annyi. Vagy legalább abból gyorstippet adni.Az ezelőtti kérdésednél sem szerencsétlenkedtünk volna feleslegesen, ha mondjuk bedobsz egy képet róla, hogy mit szeretnél.
Meg eleve megtévesztett, hogy ide írtad, azt hittem, JS is lényeg belőle, vagy nem vágom.
-
Speeedfire
félisten
Na, egy kis on legyen akkor.
Adott egy legördülő menü, amit animálni szeretnék.Ilyen a szerkezete:
<ol>
<li></li>
<li></li>
<li>
<ol>
<li></li>
</ol>
</li>
<li></li>
</ol>Ezt a kódot próbáltam, de nem ment. Ha egyedi id van akkor okés a dolog.
$(document).ready(function() {
$("#nav li").mouseover(function() {
$(this > "ul").show("slow");
});
$("#nav li ol").mouseout(function() {
$(this).hide("slow");
});
});Tehát, ha a menüben az li-re viszem az egeret akkor elvileg a benne lévő ol tagot meg kellene mutatnia. Illetve, ha az egeret leveszem erről az ol tagról akkor pedig el kellene tüntetni, de nem akarja az igazságot.
-
martonx
veterán
válasz
Speeedfire #381 üzenetére
azért ez jquery topik lenne, nem pedig html, vagy css.
-
Speeedfire
félisten
válasz
Sk8erPeter #380 üzenetére
Nem teljesen.
Adott egy div a nivoslider-ben, amiben a html elemek vannak, kép, szöveg stb stb.
A gondom az, hogy a tartalom felülre van igazítva. Ezek a tartalmak váltakoznak, tehát változó hosszúságúak.De közben rájöttem, hogy a div-en belül kell még egy div, ami absolute és annak a left és bottom értékével megoldottam.
Így már alulra került a tartalom.Középen ahol a hello world van, arra a részre akartam ezt megcsinálni.
-
Sk8erPeter
nagyúr
válasz
Speeedfire #379 üzenetére
Lehet, hogy még mindig nem ez az, amit szeretnél - de feltettem ide egy példát: [link].
Ha ez se jó, akkor illusztráld, írd körül, idézz szellemet, vagy valami.Szerk.: ja, klattyolj a gombra. Gondolom JS-sel szeretnél valami elemet feltölteni tartalommal, ezért kérdezted itt.
-
Speeedfire
félisten
válasz
Sk8erPeter #378 üzenetére
Jogos.
A 2.-ra. A div aljára kerüljön mindig a tartalom. Tehát hülyén fogalmazva, mintha alulról töltené fel a div-et.
-
Sk8erPeter
nagyúr
válasz
Speeedfire #375 üzenetére
Ha már egyszer van egy ilyened:
var spt = $('span.mailme');
akkor itt a dollárjel és zárójel felesleges:
$(spt).after(.......)
ehelyett ez is elég:
spt.after(.......)(#377) Speeedfire :
"Ha van egy fix magasságú div, akkor meglehet oldani, hogy akámilyen hosszú szöveg is van benne mindig az aljára kerüljön?"
Mihez képest az "aljára"?
Ha olyan hosszú, hogy úgyis kilógna belőle, akkor minek kellene az aljára kerülnie?
Sajnos megint nem érthető a kérdés. -
Speeedfire
félisten
Épp azt csináltam az előbb és úgy ment, csak mindnek kellett még egy saját id is.
$(document).ready(function(){
$('span.mailme').each(function(){
var spt = "#" + $(this).attr("id");
var at = / at /;
var dot = / dot /g;
var addr = $(spt).text().replace(at,"@").replace(dot,".");
$(spt).after('<a href="mailto:'+addr+'" title="Küldj üzenetet!">'+ addr +'</a>')
.hover(function(){window.status="Küldj üzenetet!";}, function(){window.status="";});
$(spt).remove();
});
});Más: Ha van egy fix magasságú div, akkor meglehet oldani, hogy akámilyen hosszú szöveg is van benne mindig az aljára kerüljön?
-
martonx
veterán
válasz
Speeedfire #375 üzenetére
ha beleteszed egy .each-be?
-
Speeedfire
félisten
Van egy ilyen email átírós cuccom.
Egy gond van vele, ha egynél több .mailme van akkor már nem működik.$(document).ready(function(){
var spt = $('span.mailme');
var at = / at /;
var dot = / dot /g;
var addr = $(spt).text().replace(at,"@").replace(dot,".");
$(spt).after('<a href="mailto:'+addr+'" title="Küldj üzenetet!">'+ addr +'</a>')
.hover(function(){window.status="Küldj üzenetet!";}, function(){window.status="";});
$(spt).remove();
});Ezt írja ki, ha már 2 van:
speeedfire@gmail.comspeeedfire at gmail.com
-
martonx
veterán
válasz
TOTAL LOKI #373 üzenetére
mondjuk átírod a hivatkozást a sajátjaidra?
-
TOTAL LOKI
tag
válasz
Sk8erPeter #370 üzenetére
Na szia!
Átnéztem a példát.
Szerintem ez szuper lesz.
Egy kérdés: ha saját képet adok hozzá, azt miképpen lehet megoldani?
Ráadásul 4 képről lenne szó, ugyanis ha rámegyek egérrel a gombra, akkor az megváltozna. -
TOTAL LOKI
tag
válasz
Sk8erPeter #370 üzenetére
Szia!
Ez nagyon szuper.
Ma kipróbálom élesbe, aztán írok.Hatalmas köszönet!
-
Sk8erPeter
nagyúr
válasz
Sk8erPeter #370 üzenetére
Most magam szórakoztatására megcsináltam "animáltan", eltűnik az ikon, aztán megjelenik, amelyiknél épp érdekes: [link]. Gondoltam akkor már belinkelem ezt is.
-
Sk8erPeter
nagyúr
válasz
Sk8erPeter #363 üzenetére
@TOTAL LOKI:
Folytassuk itt, mert ez nagyon nem privi téma, plusz több szem többet lát, meg hátha mást is érdekel.
Tehát azt mondtad, szeretnéd, ha olyan megoldás is lenne benne, mint a linkelt példaoldalon, hogy van egy ikon, ami ott marad az alján, ennek megfelelően kicsit továbbalakítgattam az általam korábban összedobált kódot, itt az új változat: [link].
Amikor kattintgatsz a dobozokra, akkor az ikonok is változnak, és letolódnak a tartalommal együtt.Itt sokféle megoldással lehet egyébként még játszani, pl. background-image-ként is meg lehet adni ezeket a képeket, de ez is egy lehetséges megoldás, hogy konkrétan képet raksz be.
(#369) Rolly: szívesen!
-
válasz
Sk8erPeter #368 üzenetére
köszi jogos
-
Sk8erPeter
nagyúr
Nem teljesen jó: mi van, ha mondjuk hibásan fut le a query, tehát az .error() (majd 1.8-as jQuery-verziótól .fail()-t kell használni, az .error() deprecated lesz) függvénybe lépne bele (már ha az itt be lenne állítva)? Akkor úgy marad, és mindvégig a progress kurzort fogja mutatni, amíg nem frissítesz teljes oldalt, vagy csinálsz mást, ami ezt a kurzort megváltoztatja?
Ergo ezt a sort:
$("body").css("cursor", "auto");
szerintem inkább tedd a .complete() függvénybe (1.8-as jQuery-verziótól ez deprecated, akkor majd .always() lesz a neve), ami mindig lefut, attól függetlenül, hogy a query-d sikeresen lefutott, vagy pedig hibába ütközött.Tehát így lehetne átalakítani a függvényedet:
function loadMenuPoint(strLink, strTitle, strContentDiv, numMID) {
$("body").css("cursor", "progress");
window.history.pushState('', strTitle, strLink);
$.ajax({
url: "ajax.php?action=loadMenuPoint&mid="+numMID,
success: function(strHtml) {
$("#"+strContentDiv).html(strHtml);
},
complete: function (jqXHR, textStatus){
$("body").css("cursor", "auto");
}
});
} -
akkor itt is
szóval azt szeretném hogy míg az ajax kérés tart addig az oldalon az egércursor progress-re változzon.ezt hogyan lehet megoldani jól? mert így nekem nem ment:
function loadMenuPoint(strLink, strTitle, strContentDiv, numMID) {
$("body").css("cursor", "progress");
window.history.pushState('', strTitle, strLink);
$.ajax({
url: "ajax.php?action=loadMenuPoint&mid="+numMID,
success: function(strHtml) {
$("#"+strContentDiv).html(strHtml);
$("body").css("cursor", "auto");
}
});
} -
martonx
veterán
válasz
TOTAL LOKI #355 üzenetére
Így van, ezt könnyen meg tudod oldani jquery-vel. Kicsit tanulmányozd a Jquery animációkra vonatkozó dokumentációt.
-
Sk8erPeter
nagyúr
válasz
TOTAL LOKI #355 üzenetére
Itt készítettem neked egy leegyszerűsített példát:
[link]Kérdés, ennek mintájára tudsz-e készíteni hasonlót.
-
Sk8erPeter
nagyúr
válasz
Brown ügynök #361 üzenetére
A klasszikus JavaScript-szintaktikáról beszél, pl.:
<div class="foo" id="bar">Blabla</div>
document.getElementById('bar').className ====>> ez egyenlő a "foo"-val.
Ugyanez jQuery-szintaktikával:
$('#bar').attr('class')
VAGY
$('#bar').attr("class")
tehát tökéletesen mindegy, hogy aposztrófot vagy macskakörmöt használsz, mindkettőre pontosan ugyanúgy működik!
Vagyis itt félreértetted:"WARNING: When setting the 'class' attribute, you must always use quotes!"
Ehhez hozzátartozik a korábbi példa is, amit ír:
$('#greatphoto').attr({
alt: 'Beijing Brush Seller',
title: 'photo by Kelly Clark'
});
When setting multiple attributes, the quotes around attribute names are optional.WARNING: When setting the 'class' attribute, you must always use quotes!
Tehát magyarul a korábbi példával élve így kéne beállítani egy title és class attribútumot:
$('#bar').attr({
title: 'this is the title of the >>bar<< element',
'class': 'foo and_one_more_class'
});Mondjuk aposztróf nélkül is működik, kipróbáltam.
(#357) jeges : mivel ez a jQuery topic, ne keverjük a hagyományos JavaScript-szintaktikát a jQuery-ben elérhetőekkel, mert az csak kavarodást okoz.
jQuery-ben teljesen jól működik a $('#bar').attr('class'), mint ahogy fentebb is írtam. -
Karma
félisten
válasz
Speeedfire #358 üzenetére
A delay csak animációkra használható, ha ilyesmit akarsz késleltetni, akkor a setTimeout a barátod.
-
Speeedfire
félisten
Ezzel lenne egy kis bajom.
A trigger megy, de a delay() előtte nem. Valami miatt nem vár, hanem egyből a delay végbe megy.$('.gv_galleryWrap').ready(function() {
$('.gv_navPlay').delay(3000).trigger('click');
}); -
jeges
senior tag
válasz
Brown ügynök #356 üzenetére
én erről beszélek. a dom objektumoknak nincs "class"-a, ezt a tulajdonságot "className"-nek hívják.
-
TOTAL LOKI
tag
Sziasztok!
Szükségem lenne egy kis segítségre.
http://www.mercedes-amg-f1.com/en/#/category/partner/
Itt található egy olyan megoldás, amit én is keresek.
A Petronast hogy megnézitek pl, akkor látható hogy ha rányomsz a nyílra, akkor lenyílik, majd vissza is tudod zárni, természetesen minden lentebb gördül nyitásnál.Gondoltam rá, hogy ez valami JQuery téma lehet, de nem tudom pontosan hogy mi.
Remélem valaki tud ezzel kapcsolatban segíteni.
Köszönöm előre is!
-
jeges
senior tag
válasz
Brown ügynök #353 üzenetére
őszintén szólva így még nem próbáltam, de valszeg az lehet az oka, h "class" attribútum nem létezik, csak "className" property.
-
Brown ügynök
senior tag
válasz
Sk8erPeter #351 üzenetére
Egy ideje már szerkesztgetek (X)HTML kódokat, úgyhogy tudtam, hogy nem valid. Végül nem <li> elem közé raktam. Igazából nem is raktam, csak hivatkoztam rá és a class attribútumot cseréltem az oldallapozónál.
Mivel valamiért ezzel a kóddal
$(this).attr("class");
undefined-t kaptam, ezért a listaelemeket <b>-re cseréltem, így már jól működik.
-
Sk8erPeter
nagyúr
válasz
Sk8erPeter #351 üzenetére
Ez már nem fért bele a szerkesztési időbe, de még annyit akartam elmondani, hogy itt a validitásra nem amiatt érdemes figyelni, hogy a fejlesztő elmondhassa, hogy milyen ügyi volt, hogy valid kódot írt, hanem azért, mert a böngészők alapvetően toleránsak az invalid kóddal szemben is, megpróbálják a lehető legtöbb, átlagember számára is értelmezhető infót megjeleníteni a kódból - de invalid kód esetén fokozottan nő a veszélye annak, hogy a különböző böngészők másképp oldják meg ezt a helyzetet, így megjelenítésben és/vagy viselkedésben, majd későbbi módosíthatóságban, DOM-bejárásban előjöhetnek problémák.
Pl. egy invalid HTML-kóddal összerakott lista esetén vagy lehetetlen bejárni a listát a megjelenítés után, vagy kiszámíthatatlan lesz, hogy azt az eredményt kapod-e, amit vártál. -
Sk8erPeter
nagyúr
válasz
Brown ügynök #350 üzenetére
Nincs mit!
Szerk.: "átírtam ezt a részt <b> tagekkel oldottam meg a lapozhatóságot"
Na de remélem akkor azt úgy, hogy <li> tagbe raktad.Tulajdonképpen nem csak az volt a gond, hogy <p> paragrafus van a <li>-elemek közé beékelve, hanem hogy bármi más HTML-elemet közbeékelsz ezek közé, máris nem valid úgy a kód.
Tehát a következő NEM jó:<ul>
<li>blabla1</li>
<div>blabla2 div-ben</div>
<li>blabla3</li>
</ul>így már JÓ:
<ul>
<li>blabla1</li>
<li><div>blabla2 div-ben</div></li>
<li>blabla3</li>
</ul> -
Brown ügynök
senior tag
válasz
Sk8erPeter #348 üzenetére
Igen, tisztában voltam vele, hogy a listaelemek között paragrafus van, már átírtam ezt a részt <b> tagekkel oldottam meg a lapozhatóságot.
Nekem szükséges volt parseJson, mivel én dataType-t nem adtam meg. Mellesleg ettől az egy sortól nem lesz kevésbé átlátható.
A PHP-s kiegészítés jól jött. Én először felcserélve adtam meg az attribútumot.
@ Sk8erPeter, Karma, jeges: köszönöm, sokat tanultam az utóbbi napokban.
-
Sk8erPeter
nagyúr
válasz
Brown ügynök #343 üzenetére
Igazából csak kiegészíteném a többieket.
Ami a második részben szerepel, nem könnyen bejárható, egyetértek, hogy bővítsd ki plusz egy egyértelmű taggal, ami jelzi, hogy itt mondjuk termékek következnek.Jó csúnyán leegyszerűsítve az, amit most generálsz, azt PHP-oldalon pl. így lehet előállítani (a lényeg szempontjából mindegy, PHP-oldalon mondjuk objektumokként kéred-e le vagy asszociatív tömb formájában; ezenkívül nyilván Te adatbázisból kéred le ezeket, tehát ebből a szempontból eltér a dolog, meg abból is, hogy ott egy normális ciklus formájában adod át az adatokat, de a lényeg érthető):
$products_page = array();
$products_page['page'] = 2;
$products_page['linkoffset'] = 0;
$products_page['maxpage'] = 3;
$products_page[] = array(
'kep' => 'airtokoul.jpg',
'nev' => 'Air Tokoul ',
'marka' => 'Nike',
'regi_ar' => '20000',
'uj_ar' => '18000',
);
$products_page[] = array(
'kep' => 'airtokoul.jpg',
'nev' => 'Air Tokoul ',
'marka' => 'Nike',
'regi_ar' => '20000',
'uj_ar' => '18000',
);
$json_return_value = json_encode($products_page);
echo $json_return_value;Ebből a generált JSON:
{"page":2,"linkoffset":0,"maxpage":3,"0":{"kep":"airtokoul.jpg","nev":"Air Tokoul ","marka":"Nike","regi_ar":"20000","uj_ar":"18000"},"1":{"kep":"airtokoul.jpg","nev":"Air Tokoul ","marka":"Nike","regi_ar":"20000","uj_ar":"18000"}}Na ehelyett a PHP-oldalról előállítható kódot ki kéne egészítened valahogy így (lásd a plusz 'products' indexet):
$products_page = array();
$products_page['page'] = 2;
$products_page['linkoffset'] = 0;
$products_page['maxpage'] = 3;
$products_page['products'][] = array(
'kep' => 'airtokoul.jpg',
'nev' => 'Air Tokoul ',
'marka' => 'Nike',
'regi_ar' => '20000',
'uj_ar' => '18000',
);
$products_page['products'][] = array(
'kep' => 'airtokoul.jpg',
'nev' => 'Air Tokoul ',
'marka' => 'Nike',
'regi_ar' => '20000',
'uj_ar' => '18000',
);
$json_return_value = json_encode($products_page);
echo $json_return_value;Na és ebből a generált JSON már így néz ki:
{"page":2,"linkoffset":0,"maxpage":3,"products":[{"kep":"airtokoul.jpg","nev":"Air Tokoul ","marka":"Nike","regi_ar":"20000","uj_ar":"18000"},{"kep":"airtokoul.jpg","nev":"Air Tokoul ","marka":"Nike","regi_ar":"20000","uj_ar":"18000"}]}Ez utóbbit pedig jQuery-vel - szerintem jól átlátható módon - így tudod bejárni:
$ul_obj = $('<ul>', {
id: 'products-list'
});
for(product_index in data.products){
$li_obj = $('<li>', {'class': 'products-list-element'});
$li_obj.html(
data.products[product_index].nev
);
$li_obj.appendTo($ul_obj);
}
$ul_obj.appendTo('#content-area');Hátha ez így segített valamit.
Kérdezz, ha valami nem tiszta. -
Sk8erPeter
nagyúr
válasz
Brown ügynök #331 üzenetére
Hibák:
- adott azonosítójú HTML-elemből csak egy legyen! Nálad egy for ciklusban generálódik le annyiszor "pager" id-val rendelkező <ul> lista, amilyen hosszú a data. (értsd: for ciklusba raktad az <ul id='pager'> legyártását)
- az <ul> lista közepébe egyszer csak beszúrsz (hozzáfűzöl) a <li> elemek után egy <p> bekezdést is, aztán folytatod a <li>-kkel. Ez így nem valid.
<ul>-en belül csak <li>-k legyenek, azon belül lehet tartalom, tehát akkor már egy <li>-be rakd a <p>-t.(#335) Brown ügynök : ahogy Karma is elmondta, NEM szükséges a parseJSON megfelelő használat esetén (hmm, emlékeim szerint a dataType-ot sem feltétlenül szükséges minden esetben megadni, bár én meg szoktam, hogy könnyen követhető legyen a kód, jól látható legyen, milyen formában várom az adatokat).
-
jeges
senior tag
attól, h jelen esetben nem csak a "számokon" megy végig, nincs tiltva ellenőrizni a kulcsot (hogy csak egy lehetséges megoldást említsek), de erre kitérni nem volt célom, s a kérdés sem erre vonatkozott értelmezésemben, hanem a hivatkozás mikéntjére általánosan.
a "ne a gyökérbe pakoljunk adatsorokat" megjegyzéssel maximálisan egyetértek, ugyanezt javallottam magam is korábban. -
Karma
félisten
válasz
Brown ügynök #343 üzenetére
Az első nem valid JSON. A másodikat annyiban módosítanám, hogy a termékeket nem közvetlenül a root objektumba tömném be, hanem tennék egy plusz attribútumot mondjuk "items" néven.
Jeges megoldása sajnos nem működne így, mert az objektum minden attribútumán végigmenne a ciklus, nem csak a számokon.
-
jeges
senior tag
válasz
Brown ügynök #343 üzenetére
a 2. eset egyszerűbb (és tisztább is ha jól értelmezem):
var obj = {...};
for(var i in obj){
var kep = obj[i].kep;
} -
Brown ügynök
senior tag
Most már csak a Json stringre kellene hivatkozni valahogy.
Az egyik lehetőség:
{"page":2,"linkoffset":0,"maxpage":3} [{"nev":"Air Consolidate","marka":"Nike","regi_ar":"20000","uj_ar":"15500","kep":"airconsolidate.jpg","datum":"2012-02-03 06:00:03","szin":"1","meret":"42"},
{"nev":"Air Effect","marka":"Nike","regi_ar":"0","uj_ar":"19600","kep":"aireffect.jpg","datum":"2012-02-03 06:00:03","szin":"1","meret":"42"}, stb.]A másik:
{"page":2,"linkoffset":0,"maxpage":3,
"0":{"kep":"airtokoul.jpg","nev":"Air Tokoul ","marka":"Nike","regi_ar":"20000","uj_ar":"18000"},
"1":{"kep":"airtokoul.jpg","nev":"Air Tokoul ","marka":"Nike","regi_ar":"20000","uj_ar":"18000"},
stb.}A for ciklusnak addig kellene mennie amíg vannak termékek (A Json a termékeket és a navigációhoz szükséges adatokat is tartalmazza), Melyik esetben könnyebb hivatkozni és hogy?
-
jeges
senior tag
válasz
Brown ügynök #339 üzenetére
for(var i = 0; i < data.length; i++){
var obj = jQuery.parseJSON(data);
product += '<section class="pbox"><article class="img"><img src="images/'+ obj.kep +'" alt="cipő" /></article>';
product += '<article class="info"><p>'+ obj.nev +'</p><p>'+ obj.marka +'</p>';
product += (obj.regi_ar > 0) ? '<p class="old">'+ obj.regi_ar +'</p><p class="new">'+ obj.uj_ar +'</p></article></section>' : '<p class="new">'+ obj.uj_ar +'</p></article></section>';
}data változó string vagy json? ha string, a length a szöveg karakteres hosszát fogja jelenteni. ha json, akkor pedig a json objektum tulajdonságainak számát. egyik esetben sincs sok értelme a for ciklusnak. ahogy most használod, akkor lenne értelmes, ha a data változó egy json stringeket tartalmazó tömb lenne (még akkor sem lenne jó, mert a második sor-ban nem data[i], hanem data szerepel), de ha jól látom, a response egy json string. ebben a környezetben a ciklusnak nincs értelme.
-
Brown ügynök
senior tag
válasz
Brown ügynök #339 üzenetére
Igen, rosszul adtam meg az id-t.
$('#products').empty().append( product );
-
Brown ügynök
senior tag
-
Karma
félisten
Én a PHP részt nem is néztem, mert ahhoz nem értek. Ha ott is van baj, én nem tudok rá mit mondani, rád bízom inkább
Viszont ha látnánk a PHP kimenetét, a JSON stringet, ami a response-ban lejön, talán kiderülne valami. Nemhiába kampányolok érte reggel óta.
Amúgy nem kellene parseJSON, ha a callback függvény után ott figyelne a dataType: 'json' paraméter is a postnak, 66. sor. De ez most elhanyagolható.
-
jeges
senior tag
válasz
Brown ügynök #335 üzenetére
ha jól értem, Karma arra próbált rámutatni, h a fetch_assoc() kimenete egy kétdimenziós (adattábla-szerű) tömb, s a kód alapján gyanús, h az eredeti cél az lett volna, h nem a teljes adattáblát, hanem csak az első (és gondolom egyetlen) sorát told össze a $nav tömbbel.
-
Brown ügynök
senior tag
Ezt nem hiszem el.
Csak az egyik tartalmat rakja be, hiába írom:
$('.nav article').empty().append( pager );
$('#product').empty().append( product );Itt a teljes kód:[link]
-
Karma
félisten
válasz
Brown ügynök #333 üzenetére
Ez most a data, vagy a data[0]? Ezért lenne jobb a JSON stringet látni... Chrome-ban a Network fülön eléred a menet közben leAJAXolt tartalmakat is. Illetve a Console-ban be tudod kapcsolni az XMLHTTPRequestek loggolását (jobb katt a fehér területen), az is hasznos lehet.
-
Karma
félisten
válasz
Brown ügynök #331 üzenetére
Jó lenne látni most már a tényleges inputot is. A kódod szerint egy tömb a JSON root eleme, amiben objektumok vannak, page és maxpage tulajdonsággal...?
Azaz ilyennek képzelem el:
[ { "page": 1, "maxPage": 3}, { "page": 2, "maxPage": 3}... ]Mellesleg a kódod nem nagyon fogja azt csinálni, amit szeretnél szerintem. (A tömb minden elemére csinálsz egy <ul>-t).
---
Amúgy azt a mapet az előbb azért írtam, hogy használd fel
Szebb lesz végeredményben. Annak az eredményét (tömb) megadhatod egy append() hívásnak paraméterként, és így hozzácsaphatod az <ul>-edhez.
-
Brown ügynök
senior tag
@jeges: Valóban nem szükséges parsolni. Viszont megint nem értek valamit:
for(var i = 0; i < data.length; i++){
var obj = data[i];
str = "<ul id='pager'><li value='1'>Első</li><li value='" + ( (obj.page > 1 ) ? obj.page - 1 : 1 ) +"'>Előző</li> ";
str += "<p >"+ obj.page +"/"+ obj.maxpage +"</p> ";
str += "<li value='"+ ( ( (obj.page + 1) > obj.maxpage) ? obj.maxpage : obj.page + 1 ) +"'>Következő</li> ";
str += "<li value='"+ (obj.maxpage) +"'>Utolsó</li></ul> ";
}Az első és előző listaelem megjelenik, viszont a többi sorban a page-ket undefined-nak látja. Ez miért van?
-
Karma
félisten
válasz
Brown ügynök #328 üzenetére
Ha a szervered az alábbi JSON stringet küldi le:
{
"pager": [ "Első", "Második", "Harmadik" ],
"etwas": [ "Foo", "Bar", "Baz"],
"answer": 42
}Akkor a data ezt az objektumot fogja tárolni, a tagjait meg pont úgy éred el, mint bármely más JS objektumnak, tehát pl. data.pager[0], vagy data.answer, vagy pl.
$.map(data.etwas, function() {
return $('<li>', { html: this });
}...---
Elvileg a post() "intelligent guess" alapján kitalálja, hogy egy JSON string jön le és beparsolja. De ha biztosra akarsz menni, a negyedik paraméterben megadhatod a dataType-ot. Bővebben.
Semmi szükség kézzel feldolgozni úgy, mint ahogy jeges írja előttem. Amúgy tisztább lehetőség a böngésző JSON parserét meghívni a JSON.parse() függvény formájában. JSON-ra konvertálni meg a JSON.stringify-jal lehet gyorsan és egyszerűen. De erre ismételten semmi szükség most.
-
jeges
senior tag
válasz
Brown ügynök #328 üzenetére
-
-
jeges
senior tag
válasz
Brown ügynök #326 üzenetére
js-ben:
var myjson = {
a: 1,
b: 2,
c: 3
}
var str = myjson.a;php-ban json_decode-dal tömbbe írod, és egyszerűen tömbként tudod használni.
-
Brown ügynök
senior tag
válasz
Brown ügynök #325 üzenetére
így sem találja meg:
var str = '<article id="content">GOTCHA!</article>';
content = $( str ).find( '#content' );
$('#products').empty().append( content);Csak ha az str-t próbálom beágyazni akkor működik. Valószínűleg a find()-al van a baj.
Más: Ha Json-t tömböt használnék, akkor hogy hivatkozhatok a kulcsokra?
-
Brown ügynök
senior tag
$.post-t használok. A kód:
function screenPagination($page){
var $color = $('#color').val();
var $size = $('#size').val();
var $order = $('#order').val();
var $url = $("#searchAjaxProduct").val();
$.post($url, { color: $color, size: $size, order: $order, page: $page},
function(data){
if(data.length > 0) {
var pager = $( data ).find( '#pager' );
var content = $( data ).find( '#content' );
$('.nav article').empty().append( pager );
$('#products').empty().append( content );
});
}
}A tartalmat csak akkor rakja be, ha az egész data-t berakom és nem keresem, hogy akkor honnan rakja be. Lehet, hogy Json-be kellene az adatokat lehívni és kliens oldalon összeállítani a kódot...
-
Karma
félisten
válasz
Brown ügynök #319 üzenetére
Jó lenne még, ha breakpointtal vagy a console.log függvénnyel kiírnád a változóidat, seperc alatt kiderülne mi a hiba.
Szerintem egyébként az, hogy a data egy string, így nem tudsz id-re keresni benne.
-
Karma
félisten
válasz
Brown ügynök #319 üzenetére
Nem válaszoltál, hogy milyen jQuery függvényt használsz az adat lehívására. A kapcsolódó kódod másold ide kérlek.
-
jeges
senior tag
válasz
Brown ügynök #319 üzenetére
php-ban json_encode alakít json-ná egy tömböt, simán echo vagy print, amit elkapsz a kliensen.
-
Brown ügynök
senior tag
válasz
Brown ügynök #319 üzenetére
Ok, nézegetem a Json-t bár nem hiszem, hogy plain text hiba miatt nem működik.
-
Speeedfire
félisten
Ez lett a vége, így minden okés. A selectorokkal kellett csak kicsit játszani a 2. résznél.
$(document).ready(function() {
if($('.gv_galleryWrap').length != 0) {
$("#munkaim").click(function() {
window.location.href='munkaim';
});
$(".gv_gallery").click(function(e) {
e.stopPropagation();
});
}
}); -
Karma
félisten
válasz
Speeedfire #314 üzenetére
$("#munkaim div") Ez itt a szelektor, aláhúzva. Most a #munkaim ID-jű elemed minden tartalmazott divjére beállítja ezt a gátat az eseménynek, ezt kellene módosítanod úgy, hogy az történjen amit szeretnél
Így vakon nem nagyon tudok mit mondani rá pontosabban
Brown ügynök: Hogyan csinálod az AJAX hívást? Rosszul paraméterezve lehet, hogy plaintextben jön le, és nem parsolja át HTML elementekké az anyagot.
Egyébként miért kész elementeket töltesz le, miért nem simán JSON adatot? (Pl. ["Első", "Második", "Harmadik"])
Erre hívnál egy mapet, amivel megcsinálod a li elementeket, append és kész.
És még távolról hasonlít is az MVC-hez. Szerintem. -
Brown ügynök
senior tag
Az ajax response-t szeretném berakni az oldalba de egyszerűen nem csinálja. A régi tartalmat kitörli de a újat nem rakja be. Alább a kód.
A tartalom:
<ul id='pager'><li value='1'>Első</li>...</ul><section id="content">...</section>Amivel beraknám:
var pager = $( data ).find( '#pager' );
var content = $( data ).find( '#content' );
$('.nav article').empty().append( pager );
$('#products').empty().append( content ); -
Karma
félisten
válasz
Speeedfire #312 üzenetére
Hát akkor írd át úgy a selectort, hogy csak a kép legyen benne
-
Karma
félisten
válasz
Speeedfire #310 üzenetére
Juj. Csináld inkább ezt:
$(document).ready(function() {
$("#munkaim").click(function() {
/* valami a visszalépéshez */
});
$("#munkaim div").click(function(e) {
e.stopPropagation();
});
});Tehát a benne lévő aldivre explicite megírod, hogy ne passzolja felfelé a click eseményt.
(A galériát debugolni most nem érek rá.) -
Speeedfire
félisten
Ismét én, tudom untok már.
Adott egy div, azon belül egy másik div. A történet annyi lenne, hogy a belekattintok a nagy divbe, de nem a benne lévőben akkor visszaugorjon az oldal az előzőre.
Jobb híján ennyire futotta tőlem, de nem tettszik neki. A linket sem tudom, hogy lehetne belerejteni ebbe, így azt a menüből szedtem ki.$(document).ready(function() {
$("#munkaim").click(function() {
$("#gallery").not(this).('.current').trigger('click');
});
}); -
Karma
félisten
válasz
Speeedfire #307 üzenetére
A GalleryView (elég ocsmány) kódját olvasgatva egyszerű, közvetlen megoldás nem lesz erre szerintem. Viszont van egy eseményfeliratkozás (delegate), amit kihasználhatsz elvileg.
Ez lenne az én tippem:
$(document).ready(function() {
$('#gallery').galleryView({
panel_width: 900,
panel_height: 600,
panel_animation: 'none',
show_filmstrip_nav: true,
transition_speed: 500,
transition_interval: 2000,
show_panels: true,
show_infobar: false,
autoPlay: true
});
$('#gallery .gv_navPlay').trigger('click.galleryview');
}); -
jeges
senior tag
válasz
Speeedfire #305 üzenetére
csak egy tipp:
$(document).ready(function() {
$('#gallery').galleryView({
panel_width: 900,
panel_height: 600,
panel_animation: 'none',
show_filmstrip_nav: true,
transition_speed: 500,
transition_interval: 2000,
show_panels: true,
show_infobar: false,
autoPlay: true
});
startSlideshow(); //ezzel szeretném meghívni, de nem megy...
});azaz a startSlideshow() elé pontosvessző kell
-
Speeedfire
félisten
Kis kódhackelésben lehetne segítséget kérni?
Nincs olyan opció, hogy autoslide a konfigurlálásban, viszont a kódban már van ilyen. Ezt, hogy lehetne meghívni?startSlideshow: function() {
var self = this,
dom = this.dom;
this.playing = true;
dom.gv_galleryWrap.everyTime(this.opts.transition_interval,'slideshow_'+this.id,function(){ self.showNext(); });
}Eddig ennyi van a beállításokban:
$(document).ready(function() {
$('#gallery').galleryView({
panel_width: 900,
panel_height: 600,
panel_animation: 'none',
show_filmstrip_nav: true,
transition_speed: 500,
transition_interval: 2000,
show_panels: true,
show_infobar: false,
autoPlay: true
}),
startSlideshow(); //ezzel szeretném meghívni, de nem megy...
}); -
martonx
veterán
válasz
Speeedfire #301 üzenetére
Tessék gugliztam helyetted kettőt. Ad-gallery-vel mi a gond?
http://www.tn3gallery.com/ - bár ingyenesen kicsit korlátozott a tudása, de a kritériumaidnak megfelel.
http://spaceforaname.com/galleryview/
Új hozzászólás Aktív témák
Hirdetés
- Xbox Series X|S
- Audi, Cupra, Seat, Skoda, Volkswagen topik
- Kerékpárosok, bringások ide!
- Anime filmek és sorozatok
- Szünetmentes tápegységek (UPS)
- Folyószámla, bankszámla, bankváltás, külföldi kártyahasználat
- Honor Magic V5 - méret a kamera mögött
- Okos Otthon / Smart Home
- Battlefield 6
- sziku69: Fűzzük össze a szavakat :)
- További aktív témák...
- Xiaomi 15 12/256Gb 3 év gari Fehér kivitel/csere csak iphone 15 pro/
- AM5 Gamer PC - Ryzen 5 8400F / RX 9060 XT / A620M / 16GB vagy 32GB RAM 5600MHz / 256GB M.2 + 1TB M.2
- GF63 Thin 11UD 15.6" FHD IPS i5-11400H RTX 3050Ti 16GB 512GB NVMe + 1TB HDD magyar vbill gar
- Mamiya RB67, az eredeti kiadas + Mamiya - Sekor objektiv
- Samsung Galaxy S21 Ultra / 12GB RAM 256GB / Gyárifüggetlen / 12Hó Garancia
- Bomba ár! Fujitsu LifeBook U758 - i5-8GEN I 8GB I 256GB SSD I HDMI I 15,6" FHD I W11 I Garancia!
- BESZÁMÍTÁS! MSI B450M R7 1700X 16GB DDR4 128GB SSD 1TB HDD GTX 1650 Super 4GB Zalman T7 Chieftec 400
- JBL Xtreme 3/4 akciós áron eladó!
- BESZÁMÍTÁS! ASRock B450M R5 2600X 16GB DDR4 500GB SSD 1TB HDD GTX 1650 4GB Zalman N5 CM 450W
- HIBÁTLAN iPhone 13 Pro 256GB Graphite -1 ÉV GARANCIA - Kártyafüggetlen, MS3073, 100% Akkumulátor
Állásajánlatok
Cég: FOTC
Város: Budapest