- sziku69: Fűzzük össze a szavakat :)
- sziku69: Szólánc.
- Luck Dragon: Asszociációs játék. :)
- Magga: PLEX: multimédia az egész lakásban
- gban: Ingyen kellene, de tegnapra
- D1Rect: Nagy "hülyétkapokazapróktól" topik
- eBay-es kütyük kis pénzért
- LordAthis: AI Kérdés érkezett - 3600 soros Spagetti kód refaktorálása és budget
- sh4d0w: Netflix? Ugyan, VW előfizetés!
- GoodSpeed: Bye PET Palack, hello SodaStream
Új hozzászólás Aktív témák
-
Speeedfire
félisten
válasz
Sk8erPeter #796 üzenetére
A kérdés jó volt.
Mivel alapból tényleg az lenne a legjobb, de ha nincs jó akkor jó lesz ez a kód. -
Karma
félisten
A Twiter használatához nézelődj a fejlesztői oldalukon, a REST API-val elvileg minden ilyesmit meg tudsz csinálni.
Maga a hívogatás mehetne JS-ből és PHP-ból is, viszont ez utóbbi esetben durva biztonsági problémák lehetnek... (az OAuth tokent ha plaintextben küldözgeted HTTP-n a backendnek, sok ember baltával szedhetne szét, joggal.)
Emailt viszont szerveroldalon tudsz küldeni. Hogy nem sikerült erről semmit se találnod, ha csak annyit kellett volna beírni a Google-be, hogy "PHP email"?
-
Jim-Y
veterán
Estét, van valami ötletetek arra, hogy jqueryvel, vagy php-val hogyan lehetne twitter üzenetet küldeni? Azt akarom megvalósítani, hogy ha bejelentkeznek mondjuk 5-nél többen az oldalra, akkor kódból küldenék egy tweetet előre beállított felhasználó twitterjére. Kerestem de nem találtam eddig megoldást :/
Ugyanez érdekelne email-re is. üdv
-
Sk8erPeter
nagyúr
Azt kérdezte eredetileg, idézem:
"mint ami itt a PH!-n van tag (félkövér, programkód, stb stb) beillesztésekor, ahol a kurzor van"
A berakott kódnak és jsFiddle-demónak meg a PH!-s félkövérítéshez és egyéb formázások tagjait létrehozó gombokhoz semmi köze - ahogy korábban írtam is. Ha úgy kérdezte volna, hogy olyat akar, mint ami a smiley-knál ("kattintható arcocskák") van, hogy a kurzor helyére bebiggyeszti az előre rögzített szöveget, nem keresgélve az adott szó elejét és végét, hogy azután köréjük pakolja a megfelelő tageket, akkor úgy egyből érthető lett volna, mi a szándéka... (kérdezni is tudni kell)
-
Karma
félisten
válasz
Sk8erPeter #793 üzenetére
Arra jó, hogy ha nem kijelölsz valamit, hanem csak simán otthagyod a kurzort valahol a szövegben, akkor a kurzor pozíciójához dobja be a stringet.
Ilyen logika van a PH-s üzenetdobozban is (lásd az eredeti kérdést), a "Kattintható kódok és arcocskák" is az aktuális kijelölés köré, vagy a kurzor helyére kerülnek be.
Próbáld ki, szerintem jót tesz a usability-nek. (Vö. a szöveg végére odatoszott elemekkel primitívebb oldalakon.)
-
Speeedfire
félisten
Lesz az is, csak sok funkció le lesz tiltva benne.
Képet nem tud feltölteni, csak már előzőleg feltöltött képet. Tudom kicsit furán hangzik és az is.
Magában a ckeditorban lesz tiltva a felöltés.
Így csak php route-ot lehet majd berakni.
Kiválasztja az adatbázisból a képet, ami majd a php feldolgoz később. A box-ba pedig így rakná bele:
{photoid:12}Szóval, ezért akarok ilyet. De ez jó is lesz szerintem.
-
Sk8erPeter
nagyúr
válasz
Speeedfire #791 üzenetére
Ezt nem értem, amit mutattál, az igazából mire jó?
Nem különösebben mélyedtem el a kódjában - annyira azért nem érdekel-, de ha kijelölöm a szöveget, és klikkelek a "példa" linkre, akkor egyszerűen kitörli a 'csába, és felülírja a "szöveg" stringgel. Mi ebben a jó?
Ennek pedig ilyenformán semmi köze ahhoz, ami itt PH!-n van. (normális szövegformázásra használhatatlan)
(#792) martonx :
Jaja, ez tényleg eléggé jóféle, de inkább az új változata: CKEditor. -
martonx
veterán
válasz
Speeedfire #791 üzenetére
miért nem használsz inkább valami rendes wysiwyg editort pl. fckeditor?
-
Speeedfire
félisten
Nem ismer valaki olyan kódot, mint ami itt a PH!-n van tag (félkövér, programkód, stb stb) beillesztésekor, ahol a kurzor van?
Egy ilyet találtam, de még nem próbáltam ki.
jQuery.fn.extend({
insertAtCaret: function(myValue){
return this.each(function(i) {
if (document.selection) {
//For browsers like Internet Explorer
this.focus();
sel = document.selection.createRange();
sel.text = myValue;
this.focus();
}
else if (this.selectionStart || this.selectionStart == '0') {
//For browsers like Firefox and Webkit based
var startPos = this.selectionStart;
var endPos = this.selectionEnd;
var scrollTop = this.scrollTop;
this.value = this.value.substring(0, startPos)+myValue+this.value.substring(endPos,this.value.length);
this.focus();
this.selectionStart = startPos + myValue.length;
this.selectionEnd = startPos + myValue.length;
this.scrollTop = scrollTop;
} else {
this.value += myValue;
this.focus();
}
})
}
});Szerk.: Kipróbálva. Nem rossz.
-
Jim-Y
veterán
válasz
Cathfaern #786 üzenetére
Igen, végül arra jutottam, hogy valami ilyesmi működhet:
function howmanyOnline(callback){
var query = "notify";
$.ajax({
type: 'POST',
url: 'http://localhost/qwaq/onthefly.php/', // !!!!!!!!!!!!!!!!!!!!!! EZT KI KELL MAJD CSERÉLNI
dataType: 'text',
data: {
query:query
},
success: function(data){
callback(data);
}
});
}amit így kell meghívnom:
howmanyOnline(function(data){
});és az adatot ezen belül tudom manipulálni, köszönöm a válaszokat
Karma: ez egy chrom-os kiegészítőben futna, vagy hát fut is, percenként csatlakozna a háttérben a szerverhez, ahonnan lekérné, hogy hányan vannak online, ha többen mint egy előre beállított érték, akkor küldene notifikációt, meg emailt, meg amit beállít a user..
-
Karma
félisten
Ezt hívják szinkron (blokkoló) hívásnak, és böngészőben szigorúan tilos(nak kéne lennie) ilyennel szarakodni, mert az egész oldalt befagyasztod a visszatérésig.
Lesszíves áttervezni aszinkron működésre.
Vagy használj web workert.
De akkor is rossz már az elv is.A jQuery szinte fogja a kezed hozzá a Promise osztállyal.
-
Cathfaern
nagyúr
Próbálkozz így
function howmanyOnline(callback){
var request = $.ajax({
type: 'POST',
url: 'http://localhost/qwaq/onthefly.php/',
dataType: 'text',
data: {
query:"notify"
}
success: function(data){
alert(data);
}
});
}Vagy belőheted szinkronra az ajax requestet, de akkor blokkolódik a böngésző amíg nem végez.
-
Jim-Y
veterán
válasz
Sk8erPeter #784 üzenetére
Azzal kezdtem, hogy ezt elolvastam, de itt szinte minden a request-re vonatkozik, nem az adatra..
function howmanyOnline(callback){
var request = $.ajax({
type: 'POST',
url: 'http://localhost/qwaq/onthefly.php/',
dataType: 'text',
data: {
query:"notify"
}
});
request.done(function(data){
//alert(data);
return data;
});
}
Ez a kód, ha ezt meghívom valahol, akkor pár másodperc múlva kiírja az adatot (ha alertelem, és nem return-ölöm) , az a baj ezzel, hogy nekem úgy kéne meghívnom, hogy,pl:var num = howmanyOnline();
És ezért írtam be, mert a doksiban csak olyat találtam, ami a requestre vonatkozik. Jelenleg ha így hívnám meg a függvényt, akkor nem adná vissza az értéket, vagyis igen, de undefined, mert a return csak a request végét várja meg, nem azt a pár másodpercet, míg megjön az adat.
Talán a dataFilter lehet érdekes... utánanézek.
-
Sk8erPeter
nagyúr
Nem ártana látni a kódodat, hogy mit csináltál... ja, hogy találjuk ki.
Az $.ajax funkciónál van jópár callback erre, hadd idézzek az egyébként NAGYON részletes hivatalos dokumentációból:
Here are the callback hooks provided by $.ajax():
1. beforeSend callback is invoked; it receives the jqXHR object and the settings map as parameters.
2. error callbacks are invoked, in the order they are registered, if the request fails. They receive the jqXHR, a string indicating the error type, and an exception object if applicable. Some built-in errors will provide a string as the exception object: "abort", "timeout", "No Transport".
3. dataFilter callback is invoked immediately upon successful receipt of response data. It receives the returned data and the value of dataType, and must return the (possibly altered) data to pass on to success.
4. success callbacks are then invoked, in the order they are registered, if the request succeeds. They receive the returned data, a string containing the success code, and the jqXHR object.
5. complete callbacks fire, in the order they are registered, when the request finishes, whether in failure or success. They receive the jqXHR object, as well as a string containing the success or error code.Aztán itt még látsz egy pár erre vonatkozó függvényt:
http://api.jquery.com/category/ajax/global-ajax-event-handlers/ -
Jim-Y
veterán
Lenne egy kérdésem megint, hogy tudok olyan ajax callt csinálni, ami megvárja amíg minden adat megjön, és csak utána adja vissza az értéket?! Mert most az a gondom, hogy van egy olyan ajax-om amibe raktam egy return-t -> hiba volt, így a return undefined-al tér vissza, nem várja meg, míg befejeződik az ajax...remélem érthető
Szeretném callbackben visszaadni az adatot, hogy lehet ezt megcsinálni?
-
Jim-Y
veterán
válasz
Sk8erPeter #780 üzenetére
"A linkelt jsFiddle-példában meg nem vettem észre, hogy hű de szigorú ellenőrzés lenne, amikor ilyen "query-t" össze tudok pakolni:" írtam is, hogy ezzel még nem foglalkoztam.
Most nem fogm átírni a kódot, hogy a * simán szerepelhessen.. jó ez így ahogy van, így is működik jól..
De, erre vissza kell kérdeznem: Te komolyan ilyen szellemben kódolsz? nem, csak ebben a projektben.
-
Sk8erPeter
nagyúr
"És akkor itt jön be, hogy miért nem * -ot küldök át, mert ha végigiterálok a $result_data-n, akkor az elemeire így akarok hivatkozni:
$result_data[$i]['mezőnév'], szerintem, bár az is lehet, sőt valószínű, hogy ez csak a hozzá nem értésemből adódik, ha csillagot küldök át, akkor nem tudja a program, hogy milyen mezők vannak a result_data-ban. Max azt tudom elképzelni, hogy így is végig lehet menni rajta: $result_data[$i][0] ... $result_data[$i][1]. Sőt,biztos arra is van vmi hasznos kód, hogy kinyerje a mezőneveket, de én most úgy oldottam meg, hogy nem * -ot küldök a query-ben, hanem még előtte behelyettesítem a mezőneveket "Nem értelek. Mielőtt ezeket leírod, miért nem az az első, hogy TESZTELSZ?
Már hogyne lehetne "kinyerni a mezőneveket" a query-ből? Próbáld már ki... Asszociatív indexként is megvan, meg úgy is, ahogy írtad, számmal indexelve...
Ha csak asszociatív indexszel szeretnéd megkapni, akkor ezt átadhatod a fetchAll-nak:$results_array = $sth->fetchAll(PDO::FETCH_ASSOC);
A linkelt jsFiddle-példában meg nem vettem észre, hogy hű de szigorú ellenőrzés lenne, amikor ilyen "query-t" össze tudok pakolni:
SELECT `datetime_created` FROM `client_activity_data_log` WHERE `realm_name` `datetime_created` `client_version` `realm_name` `username` `activity_data` `datetime_created` `realm_name` AND <>!=OR ORDER BY GROUP BY LIKE DESC ASC `datetime_created` `client_version` `realm_name` `username` `activity_data` FROM `client_activity_data_log`
... és a lehetséges kombinációk száma végtelen...
(csak egy dolog, hogy a mezőnevek közé nem ártana, ha vesszőt raknál, meg nem látom, hogy itt a sorrendet megkötötted volna...)"majd ezt is át kell írnom, de jó lenne ha minél több sor lenne a kód, nem minél kevesebb, ne kérdezdd, tényleg ne ... -.-"
De, erre vissza kell kérdeznem: Te komolyan ilyen szellemben kódolsz? -
Jim-Y
veterán
válasz
Sk8erPeter #778 üzenetére
[link] itt van ami már működik, de a flip spagettit még nem írtam át, így azért ne szólj be
Azért csináltam meg ilyenre a * -ot, mert ha veszünk egy ilyen query-t:
SELECT * FROM `client_activity_data_log`akkor ezt pont így kapja meg a PHP kód, amiben így kezelem le:
$query = $_POST['query'];
$result = $log->prepare($query);
$result->execute();
$result_data=$result->fetchAll(PDO::FETCH_ASSOC);És akkor itt jön be, hogy miért nem * -ot küldök át, mert ha végigiterálok a $result_data-n, akkor az elemeire így akarok hivatkozni:
$result_data[$i]['mezőnév'], szerintem, bár az is lehet, sőt valószínű, hogy ez csak a hozzá nem értésemből adódik, ha csillagot küldök át, akkor nem tudja a program, hogy milyen mezők vannak a result_data-ban. Max azt tudom elképzelni, hogy így is végig lehet menni rajta: $result_data[$i][0] ... $result_data[$i][1]. Sőt,biztos arra is van vmi hasznos kód, hogy kinyerje a mezőneveket, de én most úgy oldottam meg, hogy nem * -ot küldök a query-ben, hanem még előtte behelyettesítem a mezőneveket
megj: ez itt csak egy elemet jelöl ki, mert utána már nem Activity_data_log lesz, hanem pl Performance_data_log. Tehát ez a kódrészlet csak egy elemet tud kijelölni, miért nem id akkor? fene se tudja
majd ezt is át kell írnom, de jó lenne ha minél több sor lenne a kód, nem minél kevesebb, ne kérdezdd, tényleg ne ... -.-
-
Sk8erPeter
nagyúr
Mindenesetre nem ártana ellátni a kulcsszavakhoz tartozó wrappereket (span és társai) valamilyen class-szal, hogy legyen már valami egyedi jelzésük, minél jobban bővül a kódod, annál nehezebben lesz karbantartható és átlátható.
Azt még mindig nem írtad le, hogy a *-hoz miért is kellett odarakni a többitől teljesen eltérő kezelést (miért is volt szükség arra a végtelen ciklusra).
Szerk.: még egy jótanács, vagy inkább kódolási praktika.
Van a kódodnak ez a része (most ezt Karma legutóbbi szerkesztéséből vettem még):
if ($("#activity_data_log input").val() !== "") {
var spantext = "'" + $("#activity_data_log input").val() + "'";
$("#activity_data_log input").val("");
$("<span></span>").text(spantext).appendTo("#query_field_td");
}Itt mint jól látható, az $("#activity_data_log input") selector nagyon sokszor előfordul itt a kódban.
Gondolj bele, milyen teljesítményromlással jár ez, hogy a jQuery-nek tulajdonképpen 5 sorból 3-ban is végig kell rohangásznia a DOM-on, keresgélve az ilyen selectornak megfelelő elemet (nem mondom, hogy ez hű de lassú, sőt, főleg, hogy egyedi azonosítóval ellátott elemről van szó, de akkor is felesleges overhead).
Az ilyet el lehet kerülni - és nagyon is érdemes - úgy, hogy eltárolod egy változóba a már megtalált eleme(ke)t, valahogy így (most a $dataLogInput változónevet adtam neki, de tök mindegy):$dataLogInput = $("#activity_data_log input");
if ($dataLogInput.val() !== "") {
var spantext = "'" + $dataLogInput.val() + "'";
$dataLogInput.val("");
$("<span></span>").text(spantext).appendTo("#query_field_td");
}Jobb és könnyebben is módosítható, ha csak egy helyen "drótozod be" az adott selectornak megfelelő elemet.
-
Jim-Y
veterán
válasz
Sk8erPeter #776 üzenetére
Igen-igen, már valamilyen ellenőrzést tettem bele, de még nem eleget, ezzel majd később foglalkozom, eddig annyit raktam bele, hogy az input fieldbe írt szöveg csak akkor adható a query-hez, ha egy WHERE már benne van a query-ben, de ugye ez még semmi..:/ Na majd később
-
Sk8erPeter
nagyúr
Fuhh, nekem ettől a *-ra való magyarázattól szét akart durranni a fejem, annyira szétszórt iromány volt - vagy csak nekem nehéz a felfogásom.
Nem értem még mindig, miért kell, hogy másképp csináld, mint hogy "nyers" módon belepasszírozd a query-be a *-ot, attól még miért ne kaphatnád meg PHP-vel a lekérés eredményeként kapott mezők neveit...
Egyébként ennél a query-összeállításos mókánál nem ártana arra is odafigyelni, hogy a felhasználó milyen sorrendben rakhatja egymás mellé a query-hez szükséges "összetevőket", tehát egy kliensoldali ellenőrzés IS mindenképp szükséges lenne. Nem olyan bonyolult, csak mindegyik részelemnek meghatározod az elfoglalható helyét, így kialakul egyfajta sorrend. Azt sem kellene engedni, hogy duplán tudjon valaki egymás mellé pakolni korábban már hozzáadott szót (mivel akkor szinte tuti, hogy a query elcsesződik). -
Jim-Y
veterán
Azt azért raktam bele..vagyis, inkább ott kezdem, hogy azt csinálja, hogy ha a * -ra kattint, akkor a táblaneveket helyettesíti be, ezeket (`datetime_created` `client_version` `realm_name` `username` `activity_data`). Azt csak most látom én is, hogy frankón végtelen a ciklus, azóta ezt úgy tűnik javítottam, mert nálam jól működik. Erre azért van szükség, mert php oldalon, ha lekérem adatbázisból a táblát azzal az SQL lekérdezéssel amit itt az oldalon összeállítok, akkor könnyebb az oszlopokat indexelni. ha * marad az SQL-ben, akkor nem tudok olyat csinálni a php kódban, hogy $result_data[$i][$index_array[$j]] ahol a result_data az adatbázisból kinyert adat, az index array, pedig épp az, amire a *-ot cseréltem a jquery kódban, tehát (`datetime_created` `client_version` `realm_name` `username` `activity_data`)..
A <,> jeleket átírtam, köszi
-
Karma
félisten
Egy kicsit elkezdtem nyaszatolni a kódot, csak hogy látszódjon hogy hogyan is kellene az .on()-t használni. Lásd itt.
Illetve a <br/> helyett más markupot írtam, nem érzem tökéletesnek de a sörtöréseknél biztosan jobb. A < és > jelekre meg figyelj oda, HTML-ben nem szórhatod őket csak úgy
Az a csillagos logika frankó végtelen ciklust csinált, még nem tudom miért, de inkább kivettem. Az mit akarna csinálni?
-
Karma
félisten
Az az érzésem, hogy itt több problémát próbálsz egyszerre megoldani, és elbeszéltünk egymás mellett
(tetézve azzal, hogy nem tudok érdemben belefolyni a kódba még mindig
).
Az .on() a klónozott spanoknál jön be a képbe, hogy a click eseményt ne a clone()-nál hívogasd minden egyes dinamikusan létrehozott elemre, hanem csak egyszer, egy helyen definiáld. A clone-os rész tisztább lehet így.
Az, hogy közben vannak ezek a nagyobb sávok, amik statikusak (azaz ismertek már a HTML dokumentumban), egy másik eset. Ide nem kell on(), mert ilyen sávokat nem szaporítasz.
Próbálok CPU időt szakítani a fiddle vizslatására most már...
-
Speeedfire
félisten
Adott egy form, amibe be akarok illeszteni kódot. Hasonló képen, mint itt a PH!-n. Viszont szeretnék egy olyat készíteni hozzá, hogy a kódot és a között lévő számot/szöveget egybe kezelje a "rendszer". Tehát ha kijelölöm akkor az egészet jelölje ki és törölni is csak így lehessen, mint a facebook-on. Ismer valaki ilyen kódot?
-
Jim-Y
veterán
válasz
Sk8erPeter #770 üzenetére
Köszi, a </br> lövésem sincs honnan jött nekem, de észre se vettem volna
A többit is kössz, amúgy, a .on miért rosszabb mint ha direkte egy dblclick-et szúrok rá? üdv -
Sk8erPeter
nagyúr
</br>
Ez micsoda??
A jó változat talán:
<br />
Nem ártana ezt mindenhol kicserélni...Egyébként iszonyatosan túlbonyolítod a kódodat.
Példa:$(".flip").click(function(){
if($(this).attr('id')=="query_0"){
$("#own_queries").slideToggle("slow");
} else if($(this).attr('id')=="query_1"){
$("#activity_data_log").slideToggle("slow");
$("#appended_modules").html("");
$("#query_field_td").html("");
} else if($(this).attr('id')=="query_2"){
$("#performance_data_log").slideToggle("slow");
} else if($(this).attr('id')=="query_3"){
$("#system_information").slideToggle("slow");
} else if($(this).attr('id')=="query_4"){
$("#sp_activity_log").slideToggle("slow");
} else {
}
});Ehelyett az okádék gányolás helyett - bocs
- lehetne ennyi az egész:
$(".flip").click(function(){
$(this).next().slideToggle("slow");
});Ugyanúgy működik...
A markupod sem túl szép.
A dblclick-esnél meg gondolom Karma erre gondolt (Te meg elég rossz helyre próbáltad beszúrkálni, amit mondott), hogy valahogy így kéne (bár így is eléggé spagettikód marad így elsőre):
[link]
Itt működik, on() nélkül. -
Jim-Y
veterán
lejárt..
on-ra se működik így:
$("#activity_data_log span").on("click",function(){
if($.trim($(this).text())=="*"){
$(".search_span").each(function(){
var intext = $(".search_span").text();
$(".search_span").text(intext+" ").clone().appendTo("#query_field_td"); /* .on("dblclick", function(){
$(this).remove();
}); */
});
} else {
$(this).clone().appendTo("#query_field_td"); /* .on("dblclick", function(){
$(this).remove();
}); */
}
});
$("#query_field_td span").on("dblclick",function(){
$(this).remove();
}); -
Jim-Y
veterán
-
Karma
félisten
Bejönni lehet bejött, de szerinted korrekt az, hogy az újonnan létrejött elemek click eseményében az .on() hívással szaporítod az eseménykezelőket ahelyett, hogy simán ott és akkor meghívnád a klónozott elemnek a .click függvényét?
Szerintem választanod kéne, hogy vagy két .on() hívást csinálsz (egyet a "#activity_data_log span"-ra, a másikat a "#query_field span"-ra), vagy pedig explicite clickeket használsz. De nem kéne keverni.
BTW a "mi lehet a gond?" problémákat mi úgy tudjuk a legjobban debuggolni, ha jsfiddle-re vagy jsbinre feltöltöd.
-
Jim-Y
veterán
Estét!
Van egy DIV-em, benne pár SPAN, bármelyikre rákattintok, akkor klónozott önmagát, hozzáadja egy másik DIV-hez. Azt akarom elérni, hogy ha a klónozott span-re rákattintok, akkor törölje magát a konténer DIV-ből:
$("#activity_data_log span").click(function(){
$(this).clone().appendTo("#query_field");
});
$("#query_field span").click(function(){
$("#query_field").remove($(this));
});Sajnos ez most nem működik
Ha a klónozott span-re kattintok akkor semm sem történik. Mi lehet a gond? Egyébként tudom, hogy kábé semmi értelme annak, hogy valamit hozzáadok, majd rögtön törlöm, de azért akarom ezt megcsinálni, hogy ha a user véletlen kattint valamire, akkor tudja utána törölni. üdv és köszi
mod:
nah... épp, hogy leírtam úgy néz ki sikerült.. pedig direkt nem küldtem el fél óráig a hsz-t, addig próbálkoztam, hogy tuti ne történjen meg ez, aztán valami hirtelen ötlettől övezve kipróbáltam ezt:$("#activity_data_log span").click(function(){
$(this).clone().appendTo("#query_field").on("click", function(){
$(this).remove();
});
});.. és nem bejött? -.-
-
-
Jim-Y
veterán
Sziasztok, ötleteket szeretnék kapni, hogy milyen módszert alkalmazzak arra, hogy:
-van egy kereső mezőm, működik mögötte egy script, ami a keyup-okat figyeli, ha 3 karaktert beírt a user, akkor adatbázisban rákeres erre a 3 karakterre, és visszaad egy tömböt azon elemekkel, amikben szerepel az ominózus 3 betű. Jelenleg annyit csinál, hogy ha ez a tömb nem null, akkor a 3 karaktert átszínezi zöldre, egyébként pirosra.
Ezt szeretném úgy kiterjeszteni, hogy ha 3 karaktert bevitt, és megkapom a tömböt, akkor egy "dropdown" listben meg szeretném jeleníteni a lehetséges találatokat, és mindegyiket klikkelhetővé akarom tenni. Arra nincs ötletem, hogy milyen dialogot,input fieldet, textarea-t alkalmazzak, vagy, hogy milyet szoktak ilyenre használni.
Egyébként ugye lenne a dropdown list, amiből választhat a user, akkor az alatta lévő jstree úgy nyílna meg, hogy csak a kiválasztott elemet nyitná meg. Jelenleg úgy működik, hogy ha 3, vagy több karakter után megnyomja a user a gombot, akkor a jstree minden olyan elemig lebontja a fát, amiben az adott string szerepel.
Úgy szeretném megcsinálni, hogy a user eldönthesse, hogy választ egy találatot a legördülő menüből, és akkor csak azt nyitja meg a jstree, vagy nem választ semmit, és úgy nyom rá a gombra, ekkor úgy működne mint eddig, mindent kinyitna amiben a string szerepel. üdv
-
Speeedfire
félisten
válasz
Sk8erPeter #760 üzenetére
Titok a dolog. Privibe elmondom.
-
Sk8erPeter
nagyúr
válasz
Speeedfire #759 üzenetére
Milyen szegmensben?
Mit rejtélyeskedsz má'... -
Speeedfire
félisten
válasz
Sk8erPeter #758 üzenetére
Nem, de ebben a szegmensben elég sűrűn.
-
Sk8erPeter
nagyúr
Huhh, hát jó hosszú a cikk, így nem igazán olvastam bele, de van közvetlenül a Google-től is:
Making AJAX Applications CrawlableLényege, hogy az itt leírtakkal elvileg az is megoldható, hogy azok az URL-ek tárolódjanak (azokra lehessen rátalálni pl. Google-ben), amik az AJAX-os megjelenítést produkálják, tehát pl. http://example.com/#!valamioldal/blabla, és erre klattyoghat a júzer, és állítólag működik is.
Ja, amúgy alapból macerás így megoldani.
Szerintem az is jó módszer, ha először működik AJAX nélkül minden faszán, aztán amikor kész vagy, akkor ráállsz arra, hogy elkészítsd a működést AJAX-szal is; ez esetben lesz egy http://example.com/valamioldal/blabla, de működik úgy is, ha csak ráklikkelsz erre a linkre: http://example.com/masikoldal#!/valamioldal/blabla - vagy valami hasonló.
Remélem nem volt túl kusza.Na, de a lényeg, hogy a szerveroldali manipulálás nem valószínű, hogy ki fog halni, mert egyszerűen vannak dolgok, amiket a júzer gépére felesleges letölteni (lásd pl. a buzinagy profilképek, amiknek miért is ne lehetne nagy változata, ha valaki nagyban is meg akarja nézni az orcáját), vagy amit előle el kell rejteni (nem kliensoldalon machinálni).
=======================
(#757) Speeedfire:
Jaja, értettem én, hogy ilyesmiről van szó.
De ezt kliensoldalon vagdosni szerintem nagyon nem lenne jó módszer...
Egy profilképet nem kétpercenként cserélget az ember. -
Speeedfire
félisten
válasz
Sk8erPeter #755 üzenetére
Előtte volt egy alap thumbnailezés. Tehát minden kép, 800*600, illetve van még egy kisebb 120*160-as, de a profilképet már nagyobban lenne jobb olyan 200*200-as. A 800*600-ast akartam kliens oldalon vagdosni.
-
martonx
veterán
válasz
Sk8erPeter #755 üzenetére
Hát igen, nálam a SEO abszolút nem játszik.
Azért manapság AJAX mellett sem lehetetlen kereső optimalizálni, csak macerásabb: link
A példád jó, ilyenkor tényleg szerver oldalon kell a képeket manipulálni, aztán majd külön letölti valaki a képet, ha nagyban akarja látni.
Másrészt egy profil képet minek letárolni nagyban, ha úgyis mindig csak bélyegnyi méretben jelenik meg?
Nem zárkózok én el a szerver oldali programozás elől, csak az én szektoromban tényleg egyre minimálisabb szerepe van. -
Sk8erPeter
nagyúr
Itt most profilképek megjelenítéséről, abból készített thumbnailekről beszélünk.
Gondolj bele, mi lenne, ha mindenki mondjuk 3 MB-os méretű képeket töltene fel, és mondjuk átlagban 2000px×3000px paraméterekkel rendelkeznének, és mondjuk listázni szeretnéd a felhasználóidat, úgy, hogy egy thumbnailt is kellene mellette mutatni.
Akkor lekéred az összes, fentebb említett tulajdonságokkal rendelkező képet, majd kliensoldalon megvagdalod?
Az a "szép új jövő"?Ja, egyébként valóban felmerül a kérdés, hogy ha mindent AJAX-ra alapozol, nem felejtesz-e el keresőoptimalizálni.
Azért azt se felejtsd el, hogy nem mindenki pénzügyi szektorban készít webalkalmazásokat. -
Speeedfire
félisten
válasz
Sk8erPeter #752 üzenetére
Ismerem, de még nem használtam.
martonx: Szépen beindexel minden oldalt a google? Illetve meta adatok, találati listával, hogy boldogul? Régebben nem nagyon ajánlották az ajaxot mindenhova. Meg még mondták, hogy ha nagyon ajax akkor is csak szinkron módban. -
martonx
veterán
válasz
Sk8erPeter #749 üzenetére
Én mostanra már a sztenderd html lap kiszolgálás, db kapcsolat (szigorúan minden ajax-al!), meg némi csv, pdf generáláson (amik szintén db-ből származó adatok) kívül semmire nem használom a szerver oldalt.
Session-öket is már csak akkor használok, mikor tényleg szerver szinten kell állapotokat rögzíteni, egyébként mindenhez HTML5 localstorage.
Szép új jövő. -
Sk8erPeter
nagyúr
válasz
Speeedfire #751 üzenetére
Nincs is azzal baj.
Ha a felhasználó kezébe akarod adni a vagdosás jogát (konkrétan hol legyen megvágva a kép), akkor jó lehet rá az előbb linkelt Jcrop. -
Speeedfire
félisten
válasz
Sk8erPeter #749 üzenetére
Maradt a szerver oldali.
-
Speeedfire
félisten
válasz
Sk8erPeter #749 üzenetére
Lehet szerver oldani lesz belőle...ha nem lesz jobb ötletem.
-
Sk8erPeter
nagyúr
válasz
Speeedfire #748 üzenetére
OK, még mindig nem értem, miért nem lehet ezt rábízni szerveroldalra, de mindegy.
Azért profilképet sem egypercenként cserélgetnek gondolom.
Az sem világos, hogy ennek a thumbnailnek a mérete is állandóan változik, tehát az sem adott? Nincs levágva?
Gondolom akkor elsősorban az a gondod a fenti pluginnel, hogy a képek mérete tök más is lehet, ezért a CSS-ben előre rögzített távolságok nem jók. De ugyanezeket a paramétereket akkor végül is át lehetne adni JavaScripttel is.
De egyfolytában csak találgatok, mert még mindig a misztikum homálya fedi az ügyedet. -
Speeedfire
félisten
válasz
Sk8erPeter #747 üzenetére
Napi többször, hogy miért?
Olyasmi, mint egy profilkép. De szerintem marad a jquery. Azzal fogom leméretezni a rövidebb oldallal és utána pedig pozicionálni. Valahogy úgy, mint a fenti thumbs-ban. -
Sk8erPeter
nagyúr
válasz
Speeedfire #746 üzenetére
De miért módosítják sokszor (és mennyire sokszor)? Hogyan kell elképzelni a feladatot?
-
Speeedfire
félisten
válasz
Sk8erPeter #745 üzenetére
Sokszori módosítás miatt akarom inkább kliens oldalon ezt megoldani, hogy ne mindig a szerver legyen terhelve ilyenkor.
-
Sk8erPeter
nagyúr
válasz
Speeedfire #744 üzenetére
"Több méretű kép lenne, amit sűrűn variálnak és azt akarom fix méretre "vágni""
Szabad tudni, itt miről van szó konkrétan?
Csak kíváncsi vagyok, mi az oka, hogy nem szerveroldalon szeretnéd ezt intézni, hanem kliensoldalon "rejted el" lényegében a nem látható részt.Szerk.:
Ja, egy fontos dolog:
valószínű, hogy egyszerűbb/jobb/szebb lenne ezt JS+PHP-vel intézni:
JcropMegadott koordináták alapján levágod a megfelelő részt, amikor variálnak rajta.
-
Sk8erPeter
nagyúr
válasz
Speeedfire #738 üzenetére
Nézegettem, kipróbáltam, és szerintem nem rossz:
http://jsfiddle.net/Sk8erPeter/6yYE3/Itt a kódban az a lényeg, hogy a legalsó gombnál, ahol nem teljesen középre pozicionálom a képet, ott a "thumb-center-another" osztállyal inicializálom, azzal pozicionálom "középre" - ami nálam direkt nem a közepe, lásd a CSS-kódot, ami ehhez az osztályhoz tartozik.
Persze a másikat ki akarod próbálni, hogy néz ki, előtte destroy-old a megfelelő gombbal. -
Siriusb
veterán
válasz
Speeedfire #738 üzenetére
Pontosan nem tudom mire kell, de itt egy scroller:
http://manos.malihu.gr/jquery-thumbnail-scroller
Ha galéria is kellene, én ezzel szórakoztam mosanában: http://galleria.io/
-
Jim-Y
veterán
válasz
Sk8erPeter #739 üzenetére
közben én is rájöttem, hogy gányolás, és úgy oldottam meg ahogy írtad is a végén, hogy php oldalon asszociatív tömb, és akkor data[i]['descripiton'] változóban benne vannak jquery oldalon a leírások, ez már megy, működik, load, és .get nélkül, azonban közben lett egy érdekes hibám, tegnap itt fejeztem be a dolgot, mert nem tudtam rájönni, hogy miért csinálja: itt a "Más:" után jövő részlet
Jah, és amúgy elnézést a topiktól, hogy a személyes jquery köveinek kitaposását követnetek kell
Sok hülyeséget beírok, kérdezek, majd pár órával utána magam is rájövök, hogy azt nem úgy kéne, sry
-
Sk8erPeter
nagyúr
Atyaúristen, Te miket csinálsz....
Őszintén szólva már meg sem próbáltam átlátni, mit is szeretnél, annyira nem tudok kiigazodni a kódodon, mit miért úgy csinálsz, ahogy.
martonx felvetése teljesen jogos volt, hogy AJAX-lekérésen belülre még .load()-ot rakni igen erős túlzás...var img = new String("img"+i);
img = new String("<img src='http://localhost/wimyn/images/"+data[i]['images']+"'/>");Ez micsoda, miért szívatod magad meg minket ilyenekkel?
Itt egy kissé egyszerűbb létrehozási mód:
http://jsfiddle.net/Sk8erPeter/Kgj8S/Innen a példakód:
$(document).ready(function() {
var img_index = 1;
$('#mybutton').click(function() {
var img = $('<img />').attr({
'id': 'myImage'+img_index,
'src': 'http://doc.jsfiddle.net/_downloads/jsfiddle-logo.png',
'alt': 'JSFiddle logo',
'title': 'JSFiddle logo',
'width': 250
}).appendTo('#container');
img_index++;
});
});Szerintem ez jóval átláthatóbb.
var newelem = "<tr><td>"+img+"</td><td>"+$().load("http://localhost/wimyn/html/"+data[i]['description'])+"</td></tr>";
A .load() függvényt ilyen módon használni szintén gányolás, egyszerűen nem ilyen módon szokás, meg ez ilyen formában nem is igazán átlátható.
Igazából eleve már azt sem értem, ide miért töltesz be már megint valamit AJAX-szal, miért nem eleve már ezzel az adattal együtt adod vissza szerveroldalról ezt a leírást - ez egészen biztos, hogy egyszerű átgondolatlanság eredménye.
A leírást nyugodtan belepakolhatnád a success által megkapott data-ba. Tehát a válasz egy JSON-objektum lenne (PHP-vel ezt adnád vissza), amit úgy hozol létre, hogy PHP-oldalon asszociatív tömböt kreálsz, belepakolod a megfelelő indexek helyére a megfelelő értékeket, majd ezt a tömböt json_encode()-dal átalakítod, ez lesz a visszaadott érték. Persze ebbe bele kellene pakolni a status-t és minden egyéb fontosat, ami csak kell.
Ezek alapján meg kliensoldalon összeállítod a kívánt megjelenésnek megfelelő tartalmat.
De erre már számtalan példát mutattam a PHP topicban, amit Te is látogatsz.A .load() függvény használatának egyébként úgy van értelme, ha úgy használod, ahogy a példakódban is van:
$('#result').load('ajax/test.html');
De .ajax()-on belüli .load() tuti, hogy nem a megfelelő módszer. -
Speeedfire
félisten
Ennél jobb thumbnailer plugint nem ismer valaki?
Elég kusza, és api sincs hozzá. -
Jim-Y
veterán
válasz
Speeedfire #732 üzenetére
Én úgy csináltam, hogy a Username, Password input fieldekre egy ilyet állítottam be:
$("#username,#password").bind("click",function(){
$(this).val("");
});
Mondjuk a tabot nem tudom, hogy figyeli-e... mindjárt kipróbálom..tab-ra nem működik..martonx: közben átírtam olyanra, hogy a user egy file browserrel kiválaszthatja a képet, és a .html-t, ezeket feltölti, a php kód a képet elmenti egy mappába a szerveren, a test.html-t is, de kiolvassa belőle a tartalmát amit az adatbázisba ment el, majd törli a fájlt. Így jól működik
-
Jim-Y
veterán
Igen, végül rávilágítottál a problémára, mert pont ezt csináltam, azért szivatom magam ezzel, mert jelenleg ezt tudtam megvalósítani, amit te írtál olyat még nem csináltam, ilyen egyszerű
Na de akkor rákeresek ezekre, bár nem tudom, hogy pl egy képet, hogy lehetne még adatbázisban tárolni..
-
martonx
veterán
válasz
Speeedfire #732 üzenetére
.blur()
-
Speeedfire
félisten
Ha van egy text form, hogy lehet figyelni a focust?
Tehát ha valaki belekattint vagy tabbal ugrik bele?$("#pelda").bind("focus") ??
-
martonx
veterán
ezzel mi a probléma? Azon kívül, hogy ronda, és template-et illene használni.
Mondjuk én egy ideje MVC design patternt használok, ott ezt egy partialview-val oldanám meg.
Ha mindenképpen egy lapon belül akarnék sok dom elemet ide-oda beszúrogatni ajax-al, akkor meg knockout.js-t használnék.
Példa kódokat lusta vagyok írni.
Hopp, lehet megértettem a problémád. Te adatbázisban a test.html file nevét tárolod le, nem pedig a test.html tartalmát. De miért szivatod magad ilyenekkel? A helyedben azon is elgondolkoznék, hogy a képet is cakk-pakk letárolnám SQL-ben.
Ha a test.html tartalmát tárolod le, semeddig nem tart azt ajax-al kiküldeni a kliensnek, a kép nevével együtt, ahol beilleszted őket a megfelelő helyre, és már kész is. -
Jim-Y
veterán
Nem azzal van a gond, hanem mutass nekem pl egy olyan kódot, ami:
-tegyük fel, hogy az adatbázisból 2 mezőt,2 adatot szedünk ki, az egyik "test.html", a másik "sam_gal_y.jpg", na most ezeket kéne hozzáappendelni, egy DOM elementhez, nem működő példa:
theimage = "sam_gal_y.jpg";
thedescription = "test.html";
var img="<img src='"+theimage+"'/>";
$("#theDOMelement").append("<tr><td>"+img+"</td><td>"+ na ide kell valami működő(thedescription) + "</td></tr>"); -
Jim-Y
veterán
Jaja
ezt elvetettem, egyébként ha a hírdetés szövegét nem külön fileba menteném a serveren, hanem az adatbázisba, akkor már kész lenne, működne szuperül. Csak arra gondoltam, hogy talán előnyösebb lenne ha a hírdetést, a user külön .html-ként tölthetné fel, de lehet elállok ettől
Azóta egyébként a .load-ot dobtam a kukába, és helyette a $.get-tel próbálkoztam, de ott meg az a baj, hogy a visszatérési értéket nem tudtam kimenteni a get scope-jából :S
-
Jim-Y
veterán
Sziasztok, erre nem tudok rájönni:
function getoffers(provider){
$.ajax({
type: 'POST',
url: 'http://localhost/wimyn/get_offers.php/',
dataType: 'json',
data:{
getoffer: provider
},
success: function(data){
console.log(data[0]['offer_id']);
for(var i=0;i<data.length;++i){
var img = new String("img"+i);
img = new String("<img src='http://localhost/wimyn/images/"+data[i]['images']+"'/>");
var newelem = "<tr><td>"+img+"</td><td>"+$().load("http://localhost/wimyn/html/"+data[i]['description'])+"</td></tr>";
$("#offer_table").append(newelem);
}
},
error: function(){
// no data
}
});
}$().load("http://localhost/wimyn/html/"+data[i]['description']) ezt kéne úgy átírni, hogy betöltse ide a data(i)['description'] (ami test.html) tartalmát.
a helyzet a következő, az adatbázisban csak fileneveket tárolok, amik a szerveren vannak, a fenti kódban pedig a filenevek alapján az oldalra tölteném be őket. Jelenleg a képet betölti, de a test.html tartalmát nem [object Object]-et ad vissza erre: $().load("http://localhost/wimyn/html/"+data[i]['description']) azt is tudodm, hogy a $() nem lesz jó, de akkor hogy máshogy tudnám egy html tartalmát beletölteni? üdv
-
Jim-Y
veterán
Ehh, a kép megjelenik, user error volt, az src atrribut-nál rossz helyen volt egy quote -.-
Karma: jelenleg ezt adja vissza, bár nem ez lenne a cél, de még nincs meg a megoldás
$result = $db->query("SELECT offer_id,description,images FROM offers;");
foreach ($result as $row) {
$data['offer_id']=$row['offer_id'];
$data['description']=$row['description'];
$data['images']=$row['images'];
}
echo json_encode($data);Tehát ha jól sejtem, akkor kliens oldalon 3 adatot tudok kezelni..
Nem ez lenne a cél, de tegnap éjjel idáig jutottam, a legjobb az lenne, ha egy olyan struktúrában tudnám visszaadni, hogy:
$data['offer_id']
$data['description']
$data['images']
$data['offer_id']
$data['description']
$data['images']
...offer_id lehet ugyanaz, és szeretnék majd rá szűrni is, plusz minden offer_id-hoz tartozik egy desc. és egy image. Tehát valahogy úgy kéne visszaadnom a php-ból, hogy kliens oldalon valahogy így tudjak szűrni rá:
if(result['offer_id']==1){
result['offer_id']['description'] = ...
result['offer_id']['images'] = ...
}Ez lesz mára a feladat
(többek között)
A templatek itt nem tudom mik
-
Jim-Y
veterán
Sziasztok. Lenne egy olyan kérdésem, hogy azt hogy tudom megoldani, hogy adatbázisban van egy táblám, aminek 2 mezője van, egy description, meg egy image. A description sima text, az image is, de ilyen formában: "samsung_galaxy_y.png".
JQuery-vel ajax segítségével beolvasom a 2 mező értékeit, és meg szeretném jeleníteni az oldalon, hogy tudnám azt elérni, hogy az ajax-al kiolvasott kép src-jét be tudjam tölteni, és így megjeleníteni a képet?
Mutatom az idevágó kódrészletet:
$("#select_provider").change(function(){
console.log($("#select_provider :selected").val());
var getoffer_as_provider = $("#select_provider :selected").val();
getoffers(getoffer_as_provider);
});
function getoffers(provider){
$.ajax({
type: 'POST',
url: 'http://localhost/wimyn/get_offers.php/',
dataType: 'json',
data:{
getoffer: provider
},
success: function(data){
if(data['offer_id']=="1"){
var imgsrc = new String("<img src='http://localhost/images/'"+data['images']+"/>");
var img = new Image(imgsrc);
$("#offer_table").append("<tr><td>"+img+"</td><td><span>"+data['description']+"</span></td></tr>");
} else {
}
},
error: function(){
// no data
}
});
}Van az oldalon egy select list, ha ott kiválasztok valamit akkor lefut egy ajax call, ami visszaadja a selected elemekhez tartozó ajánlatokat, ezeket szeretném úgy megjeleníteni, hogy az adatbázisban tárolt kép "nevek" alapján töltse be a képeket. üdv
-
martonx
veterán
az ajax success-ébe kell beleraknod a dinamikus rész click esemény kezelését.
Másrészt én a helyedben a span-os részt átírnám, hogy a button-nak legyen egy data tag-je, és ezt olvasnám ki. Amikor html-t utaztatsz / raksz össze, felesleges a DOM-ot egy csomó plusz elemmel terhelned.
data() jquery függvénnyel pedig ki lehetne olvasni, hogy mit is rejtettél bele. -
j0k3r!
őstag
Siriusb es Jim-Y koszonom. szerintem mar kozel jarunk, de amit elfelejtettem mondani, hogy dinamikusan letrehozott adatrol van szo
most igy nem jo:$(".delete_img").on({
click: function(){
var v = $(this).next().text();
//alert(v);
//return;
$.ajax({
url: "request.php?action=remove&id=" + v,
type: "GET",
success: function(){
showAll();
}
})
}
})otlet?
-
j0k3r!
őstag
koszonom szepen, de akkor pontositok egy kicsit: a fentebb mutatott html reszletbol sok van az oldalon, ugyanis ezek a bizonyos userekhez tartozo id-k, a hadmuvelet annyi lenne, hogy rakattintok az adott kepre (a usereket egy tablazatban jelenitem meg, 1 sor - 1 user), akkor az adott sorban levo id-t kiveszi a spanbol, amit hozzafuzok egy ajaxkeres parameterekent, a tobbit mar a php elintezi (marmint a torlest)
remelem igy mar vilagosabb
-
j0k3r!
őstag
hello!
van egy ilyen html reszletem:
<td>
<img class="delete_img" src="delete.png">
<span class="delete_span">5</span>
</td>jquery-vel szeretnem kiolvasni a span tartalmat, de nem akar mukodni:
$(".delete_img").click(function(){
var v = $(this).parent().find('.delete_span').html();
})mit rontottam el?
segitsegetek elore is koszonom.
-
Karma
félisten
Erős a gyanúm, hogy ha egynél több p van az oldalon, alkor az nem fog menni, mert a p selector az összeset kihozza
A click callbackjében inkább $(this), és akkor biztos valami konzisztens dolog történik.
Ja és a toggle az teljesen másra jó. Szerintem toggleClass a nyerő, de most nem tudok fiddle-t írni rá.
-
Dave-11
tag
Hádemostakkor...
$(document).ready(function(){
$("button").toggle(
function() {
$("p").css("background-color","red");
},
function() {
$("p").css("background-color","green");
}
});Megcsinálom, de ígyse jó
-
Dave-11
tag
válasz
Speeedfire #706 üzenetére
Na igen, legelőször így indultam el, pont így
Akkor először a "//kód" rész ronthattam el, oda mi kell? Talán ez:
$("p").css("background","green"); ?Áh ez így nem jó, így nem történik semmi
-
v2izzy
tag
$("p").css("background","red")
Ez értékadás, mivel a függvény úgy működik, hogy ha 2 paraméter van akkor a második az érték, ha 1 van akkor, visszaadja az értéket, tehát neked így kell:
if ( $("p").css("background") == "red" )
if ( $("p").css("background") == "green" )De szerintem szebb/jobb, ha ilyet mondjuk .toggle()-el csinálsz. Így:
$(function() {
$('button').toggle(function() {
$('p').css('background','green')
}, function() {
$('p').css('background','red')
})
}) -
Dave-11
tag
Meg tudnátok mondani hogy mi a hiba az alábbi kódban?
$(document).ready(function(){
$("button").click(function(){
if ( $("p").css("background","red") ) {
$("p").css("background","green");
}
if ( $("p").css("background","green") ) {
$("p").css("background","red");
}
});
});
Úgy döntöttem hogy lekezdek jQueryt tanulni, és egy kis olvasgatás után arra gondoltam írok egy egyszerű programot. Az a lényege, mint látjátok, hogy az összes gomb típusú elemet lenyomom, akkor kiválasztja az összes p típusú elemet, és belép egy elágazásba. És azt szeretném, hogy leellenőrzi, ha a p elem háttere piros, akkor zöldre váltja, ha pedig zöld, akkor pirosra váltja, tehát hogy oda-vissza lehessen színt váltani. -
vakondka
őstag
válasz
Sk8erPeter #702 üzenetére
Jeeeeessz!
Töléletes! Köszi szépen mégyegyszer
-
Sk8erPeter
nagyúr
válasz
vakondka #701 üzenetére
Itt azt írtad, hogy van .on() függvényhívás, és ezen keresztül töltöd be a megfelelő tartalmakat:
$("body").on("click", "a[href*='-c-'], a[href*='-p-'], a[href*='extra_info_pages.php'], a[href*='create_account.php']", function(e) {
var a_href = $(this).attr('href');
var content = $('#column_content');
e.preventDefault();
content.fadeToggle();
content.load(a_href +' #column_content');
content.fadeToggle();
//return false;
});Feltételezem, ebben az esetben azért kell neked az .on(), mert dinamikusan létrehozott elemekre való click-eseményekre kell rákötnöd az AJAX-os betöltést, vagyis a .load() használatát.
Na, ebben a kódban lehetne a .load() után az a függvényhívás, amit a linkelt demóban createBubbles()-nek hívtam - de a lényeg, hogy az, ami "létrehozza" ezeket a "buborékokat" úgy, hogy az adott elemek mouseover és mouseout eseményére köt bizonyos megjelenítésbeli dolgokat.De ha nem .on()-nal oldanád meg, hanem sima .click()-en belüli függvénnyel, annál is ugyanez lenne a jó módszer, hogy közvetlenül azutánra pakolod a stílus átalakítására szolgáló függvény hívását (tehát ennek a buboréknak a megjelenítését), ahol meghívod az AJAX-os betöltésre szolgáló függvényt.
Tehát pl. a fenti kódodba belepakolva azt a függvényt:
$("body").on("click", "a[href*='-c-'], a[href*='-p-'], a[href*='extra_info_pages.php'], a[href*='create_account.php']", function(e) {
var a_href = $(this).attr('href');
var content = $('#column_content');
content.fadeToggle();
// itt egy callback lesz a buborék létrehozása
content.load(a_href +' #column_content', function(){
createBubbles();
});
content.fadeToggle();
e.preventDefault();
//return false;
});Most itt úgy oldottam meg, hogy direkt a load() megtörténte utáni callback-függvényként hívom meg a createBubbles()-t.
-
vakondka
őstag
válasz
Sk8erPeter #699 üzenetére
Hááát ez az, hogy nincs on függvényhívás.
A helyzet a következő:
Rákattintanak egy termékkategória linkre, ez AJAX-szal betölti a #column_content div-be az összes terméket ami abban a kategóriában van.
A kategória listázásnál minden terméknél van készletinfó feliratú kép, mouseover esetén jön fel a buborék, de ugye ez esetben nem tudom hova kellene tenni .on
Új hozzászólás Aktív témák
Hirdetés
- Autóápolás, karbantartás, fényezés
- Milyen légtisztítót vegyek?
- XPEnology
- Építő/felújító topik
- Lexus, Toyota topik
- Sony MILC fényképezőgépcsalád
- Kerékpárosok, bringások ide!
- AMD K6-III, és minden ami RETRO - Oldschool tuning
- Milyen légkondit a lakásba?
- Audi, Cupra, Seat, Skoda, Volkswagen topik
- További aktív témák...
- Gamer PC-Számítógép! Csere-Beszámítás! I5 10500T / RTX 3050 / 32GB DDR4 / 512 SSD!
- Bomba ár! HP ProBook 440 G6 - i5-8GEN I 8GB I 256SSD I HDMI I 14" FHD I Cam I W10 I Gari!
- HP EliteBook 840 G7 i5-10210U 16GB 512GB 1 év garancia
- Bomba ár! Dell Latitude 7320 - i5-11GEN I 8GB I 512SSD I HDMI I 13,3" FHD I Cam I W11 I Garancia!
- Telefon felvásárlás!! Samsung Galaxy A20e/Samsung Galaxy A40/Samsung Galaxy A04s/Samsung Galaxy A03s
Állásajánlatok
Cég: FOTC
Város: Budapest