Új hozzászólás Aktív témák
-
Siriusb
veterán
-
Siriusb
veterán
Én sosem szerettem az IE-t, nagy élmény volt, amikor rájöttem létezik más is.
Azóta, amióta weboldalakat barkácsolok, különösen utálom és szidom az IE-t és a kedves előállítóját. Minden böngészőben megy minden, de az IE összes verziójára külön kell valami CSS-t eszkábálni. Hrrrrrr.
Egy-két embert azért már letérítettem az MS ösvényéről.Most éppen arra próbálok nevelni, hogy az email-ek aljára írjuk a választ, nem a tetejére, de teljesen kilátástalan.
-
Jim-Y
veterán
Találtam egy megoldást közben:
if($.jstree._reference("#edit-service-group-tree")._get_type(data.rslt.obj) == "service"){
alert("service");
} else {
alert("service_group");
}közben egy másik kérdés is lenne, ugyanitt, hogy tudom a data.rslt.obj szülőjét elérni? Ugyanis ez nem akar működni:/ : data.rslt.obj.parent.attr('id') :S
[ Szerkesztve ]
-
-
Sk8erPeter
nagyúr
Szerk: ja bocs, kicsit félreértettem, szóval ilyen slide-szerű valami kell neked.
Akkor amit Speeedfire belinkelt, onnan lehet szemezgetni, pl. AnythingSlider, stb.[ Szerkesztve ]
Sk8erPeter
-
Sk8erPeter
nagyúr
Lehet margókkal, paddinggel, szélességekkel szórakozni, mindezt animálni, beúsztatni az egyik div helyére a másikat, stb., jó pöcsölős meló, ha igazán szépet, testreszabhatót akarsz, de főleg olyat, ami minden böngészőben működik.
De én tuti nem szarakodnék azzal, hogy feltaláljam a spanyolviaszt, amikor már helyettem kismillió ember megtette már a tesztelgetést, plugin-írogatást, stb...Sk8erPeter
-
Sk8erPeter
nagyúr
Most látom, amit korábban írtál:
"nincs arra egyszerű megoldás, hogy valami horizontálisan kiússzon a képből?"
"jquery basic methodok között csak olyan van ami vertikálisan csinál dolgokat"Na most akkor neked horizontális vagy vertikális csúsztatgatás kell? Nem mindegy.
Egyébként sima slide effect van a jQuery UI-ba beépítve is: [link]. Válaszd ki a Slide effectet.Sk8erPeter
-
Sk8erPeter
nagyúr
Na ne vicceljél már... jQuery UI, mint 3rd party kód. Ilyen alapon a jQuery is "3rd party kód", bár jó lenne tudni, jelen esetben konkrétan mit értesz ezalatt...
Már ne haragudj, de ha meg szakdogához kell, akkor talán illene magadat egy kicsit jobban belevetni a témába, mint hogy fórumról ollózgatod össze a félkész megoldásokat...Sk8erPeter
-
Sk8erPeter
nagyúr
-
j0k3r!
senior tag
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
some men just wanna watch the world burn...
-
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.Én kérek elnézést!
-
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.Sk8erPeter
-
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.
“All nothings are not equal.”
-
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();
}); -
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.Sk8erPeter
-
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...
“All nothings are not equal.”
-
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?
[ Szerkesztve ]
“All nothings are not equal.”
-
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).[ Szerkesztve ]
Sk8erPeter
-
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.
[ Szerkesztve ]
Sk8erPeter
-
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?[ Szerkesztve ]
Sk8erPeter
-
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/Sk8erPeter
-
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.
[ Szerkesztve ]
-
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.
[ Szerkesztve ]
“All nothings are not equal.”
-
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"?
“All nothings are not equal.”
-
Speeedfire
nagyúr
1db form van csak. Csak a 2. rész ki van takarva egy fóliával, mint a használtautón. 4 select van, amit nem akarok resetelni, ezen kívül van vagy 50 amit igen.
Fotóim https://fb.com/toth.szabolcs.art || IG: http://instagram.com/_tothszabolcs_ || Weblapom http://szabolcs-toth.com
-
Lacces
őstag
és Karma, köszönöm, akkor majd megnézem a kódját. Igazság szerint a hibámra majd még várom a többiek válaszát .
Még egy kérdés, egy select tartalmát, hogyan tudom lekérdezni? (lehet az is rossz nálam)
Egyébként itt jönne egy kérdésem mindenkinek. Gondolkoztam ezen a Jquery használaton, hogy ha egy weboldalt szeretnék minden fajta eszközön megjeleníteni ( mobil, ipad, pc ), akkor én észrevettem, hogy sajnos nem mindenhol működik a jquery.
Nekem ipadem nincs, de egyik haverom mutatta, hogy ha egy dropdown féle menüszerkezetet írtam meg jquery-vel, és az az ipad-jén nem műxik...
És van erről leírás, hogy a jquery mely eszközökre érhető el? Esetleg érdemes használni az új jquery mobil könyvtárat inkább? (ez amúgy pc-s böngészökön is jól működik?) -
Sk8erPeter
nagyúr
"a ++i az i++ ellenében nem hiba, csak előbbi használata javasolt"
Ez nem igaz. For ciklusnál teljesen jó az i++, tipikusan ezt szokták használni.Az sem igaz, hogy szintaktikailag helytelen lenne a
for (i=0; i<texts.length; i++)
sőt, ez így teljesen rendben van, ha az i-t korábban deklarálta var-ral. De ha nem, akkor a JavaScript ezt "megteszi" a háttérben, de persze az a normális megoldás, ha deklarálod.[ Szerkesztve ]
Sk8erPeter
-
Karma
félisten
Szemantikailag egy for ciklus léptetésénél nincs különbség a kettő között. Az "ideiglenes változó, ami létrejön a postincrement miatt" probléma meg C++-ban érdekes csak az operator overloading miatt. Gyakorlatban sincs különbség.. Másik teszt (egy ocsmány pink oldalon )
[ Szerkesztve ]
“All nothings are not equal.”
-
Sk8erPeter
nagyúr
Ennek így indoklás nélkül főleg nincs értelme (ha nem is tudod megindokolni, akkor érdekesen jön ki egy olyan állítás, hogy szerinted ÉN tudom rosszul ), mert önmagában nem igaz, hogy "a ++i-t kéne megjegyezni". Nem, nem azt kell megjegyezni. Ez csakis attól függ, hogy épp mi a felhasználás módja. Ha neked az épp érintett résznél a MEGNÖVELT értékre van szükséged, és nem jó, hogy később növel, akkor indokolt a használata, egyébként abszolúte semmi előnye nincs. A for ciklusnál fejlécében pedig főleg semmivel nem lesz jobb a ciklusod attól, hogy ++i-t használsz i++ helyett.
Ez "a neten is ezt ajánlják" meg nem túl hiteles referencia.
[ Szerkesztve ]
Sk8erPeter
-
Muton
addikt
igen, ez jónak tűnik, csak akkor ahogy írja az x-et, mindig újra kell generálni a dropdown optionokat az aktuális x-el. Köszönöm az ötletet, ez lesz az út!
martonx: mert ilyen dizájn készült, így kell megvalósítani. Arra én is gondoltam, hogy csak az óra, perc, stb megy dropdown-ba, de az elég szoc módon néz ki
Muton#2316 - $z@r a drop >_<
-
Jim-Y
veterán
Ez egy problémát már kiküszöböl: http://jsbin.com/icinaz/3/edit
[ Szerkesztve ]