Hirdetés
- D1Rect: Nagy "hülyétkapokazapróktól" topik
- Luck Dragon: Asszociációs játék. :)
- tordaitibi: Chatcontrol
- Bitfenix Outlaw
- ldave: New Game Blitz - 2025
- sziku69: Fűzzük össze a szavakat :)
- Elektromos rásegítésű kerékpárok
- bambano: Bambanő háza tája
- Geri Bátyó: Agglegénykonyha 3 – Paradicsomos káposzta (amit amúgy utálok)
- Gurulunk, WAZE?!
Új hozzászólás Aktív témák
-
Siriusb
veterán
Üdvözletem!
A Galleria pluginnel játszom, és azt szeretném megoldani, hogy a thumbnail-ek melletti nyilak ne csak klikkre, de mouseover()-re is reagáljanak, ráadásul folyamatosan léptetve a képeket, amig az esemény tart. Tehát egy végtelen hurokra lenne szükségem.
http://galleria.io/docs/references/extending/Galleria.ready(function() {
var gallery = this;
this.$('thumb-nav-right').mouseover(function(e){
gallery.next();
});
});Tehát a galleria.next() sornak kellene folyamatosan (persze valami delay-jel) futni.
Nézegettem a queue(), delay() parancsokat, ezekkel lehetne valamit kezdeni? -
Speeedfire
félisten
válasz
Sk8erPeter #597 üzenetére
Köszi.
-
Sk8erPeter
nagyúr
válasz
Speeedfire #596 üzenetére
Szívesen.
-
Speeedfire
félisten
válasz
Sk8erPeter #595 üzenetére
Ja, ezt benéztem.
Akkor ezért dobott vissza mindig error-t...
Data-val már jó. -
Sk8erPeter
nagyúr
válasz
Speeedfire #594 üzenetére
Mi az a "date"? Nem "data"-nak kéne ott lennie?
Eszerint igen: [link]... -
Speeedfire
félisten
Próbáltam valami normális dolgot csinálni ezzel a qtip-el, de egy kis "változó hibába jutottam"...
$(".row .thumb").each(function() {
var thisid = $(this).parent().parent().children(".dataid").val();
$(this).qtip({
content: {
url: "'.Yii::app()->baseUrl.'/hirdetes/ajaxtip",
date: {
id: thisid
},
method: "post"
},
position: {
target: "mouse",
},
style: "cream"
});
});A thisid értéke sosincs deklarálva, vagy nem adja át az ajax-nak, mert a feldolgozó oldalon a $_POST['id'] mindig üres. Hogy lehetne úgy deklarálni a thisid-t, hogy megkapja az ajax?
-
Siriusb
veterán
válasz
Speeedfire #589 üzenetére
Ez a qtip2 tényleg jónak tűnik. Lehet a login feature-jét ki is próbálom hamarosan.
Ha találsz még valami jót, szólj. -
Cathfaern
nagyúr
válasz
Speeedfire #589 üzenetére
Ahogy az oldalon is írják, ennek már van továbbfejlesztett verziója, a qtip2, érdemes inkább azt használni
-
Karma
félisten
válasz
Speeedfire #587 üzenetére
A szó amit keresel: tooltip.
Így találsz is valamit. -
Sk8erPeter
nagyúr
Na igen, ott eléggé kell a táblázatszerű megjelenítés.
Itt mondjuk elég durván kell "extra taggelni", nem csak "bizonyos mértékben", ahogy elnézem, lényegében az "idézett" rész egy az egyben erre épül.
Mondjuk biztos lehetne alternatív szintaktikát kiagyalni rá, de valószínűleg így a legegyszerűbb, és durván nagymennyiségű adatnál meg a lényeg, hogy azért visszakövethető legyen, és tulajdonképpen nem olyan csúf, hogy ne lehetne megbocsátani, hogy tele van szórva szemantikai keveredést is jelentő kódokkal.============================================
Más:
Ha valakinek jsFiddle-ről másolási problémája akad, tehát "Unexpected token ILLEGAL"-jellegű hibaüzenetet kap, akkor az okát a másik topicban már kitárgyaltuk, konkrétan: [link], [link].
-
martonx
veterán
válasz
Sk8erPeter #582 üzenetére
Pénzügyi szektorban programozok. Weblapokat nem, kizárólag web alkalmazásokat készítek (na jó, maszekban néha befut egy-egy weblap is...).
Mindenféle bonyolult, és kevésbé bonyolult ügyviteli felületet készítek.
És amikor minden mindennel összefügg, és mindennek minden függvényében kell szinkronban mozognia, nos olyankor nincs elegánsabb az MVVM patternnél. Még ha ehhez bizonyos mértékben extra taggelni kell is a HTML kódot. -
Sk8erPeter
nagyúr
Hátha valakinek szüksége van az egyes billentyűk kódjára, a hozzájuk tartozó események figyelésére, erről készítettem jsFiddle-demót:
http://jsfiddle.net/Sk8erPeter/EAjYe/ -
Sk8erPeter
nagyúr
Köszi a linket, na igen, ott választ is adnak, hogy miért is nem alkalmaztam ezt soha még:
a more readable way of writing it would be this:
(function(){})();Például Drupalban is ez a használati mód a standard:
Drupal 7 - Using jQuery"Using jQuery
jQuery is now namespaced to avoid conflicts with other Javascript libraries such as Prototype. All your code that expects to use jQuery as $ should be wrapped in an outer context like so.
(function ($) {
// All your code here
})(jQuery);If you don't, you may see the error
Uncaught TypeError: Property '$' of object [object DOMWindow] is not a function
or similar."A másik linken bővebben elmagyarázzák a használatának okát (amivel mondjuk feltételezem, Te nyilván tisztában vagy, de másnak érdekes lehet).
Mindenkinek (ha már ezt a fentit belinkeltem):
itt egy érdekes olvasmány a JavaScript-kódok moduláris felépítését elősegítő tervezési mintáról, amire a Drupal 7 is épül (már a 6-os is épített rá, de a 7-esnél ez még inkább jellemző, és felfelé is megmarad ez a tendencia), ajánlom olvasásra:JavaScript Module Pattern: In-Depth.
Nagy előnye, hogy így az egyes modulok a többi által beállított értékeket, viselkedést, stb. is felül tudják bírálni - ahogy benne is van a nevében, moduláris, tehát az egyes jól elkülöníthető egységeket hozzá tudjuk kapcsolni a meglévő rendszerünkhöz, vagy épp le tudjuk választani róla. Jobb esetben ez nem is okoz semmiféle problémát a korábbi rendszer működésében, csak megváltoztatja azt.
Annak, aki Drupalhoz fejleszt, kötelező olvasmány.
-
Sk8erPeter
nagyúr
Őszintén szólva a kódját olyan nagyon nem tanulmányoztam át.
Most viszont belenéztem, mert elkezdett érdekelni, miért oly elegáns.Van egy ilyen példa, csak kiragadva a HTML-részt:
<form data-bind="submit: addTask">
Add task: <input data-bind="value: newTaskText" placeholder="What needs to be done?" />
<button type="submit">Add</button>
</form>
<ul data-bind="foreach: tasks, visible: tasks().length > 0">
<li>
<input type="checkbox" data-bind="checked: isDone" />
<input data-bind="value: title, disable: isDone" />
<a href="#" data-bind="click: $parent.removeTask">Delete</a>
</li>
</ul>
You have <b data-bind="text: incompleteTasks().length"> </b> incomplete task(s)
<span data-bind="visible: incompleteTasks().length == 0"> - it's beer time!</span>Valahogy számomra ez kevésbé tartozik az elegáns kategóriába, hogy igazából minden elemhez tartozó kliensoldali adat bele van égetve data-binddal az elemek attribútumába.
Tudom, találjak ki jobbat.
De ez nekem akkor is szemantikai keveredés, mint amikor valaki mondjuk telerakja a jQuery-kódját CSS-módosítgatásokkal meg HTML-elemekkel, az is kerülendő, mert a jó gyakorlat a különböző nyelvek lehetőleg teljes szétválasztása.
Na ezt nem kicsit rúgja fel a fenti kód készítője - de persze azt is elfogadom, hogy nem egyszerű általános jellegű kódot írni ilyen célra.
Meg gondolom létezik szebb módszer, amit el lehet érni KnockOut JS-sel is, ennek még nem néztem utána.
De majd holnap jobban megkukkantom a többi példát is, ha lesz rá időm.Amúgy kíváncsiságból, milyen jellegű alkalmazásnál szoktál ilyen durva mértékű kliensoldali kódot alkalmazni? Pl. gridek gyártogatására, stb.
Általában inkább admin-felületekhez? Vagy egyéb, "nem átlagos" webalkalmazásokra?
Pl. mittudomén, cégek adott éves forgalmi adatainak és egyebeknek a kliensoldali megjelenítésére? -
martonx
veterán
válasz
Sk8erPeter #577 üzenetére
pl. meglévő kontrolokat elég nehézkes vele kezelni, hogy mást ne mondjak, próbálj meg egy bonyolultabb jqgrid-et feltölteni knockoutos objektummal. Majd pageld, sortold stb...
Bár már látom, hogy készülnek a knockoutos controlok is, a kogrid például egész okos.
Azért jelenleg a szerver oldal felé is egyszerűbb get-el, post-al kommunikálni, mintsem JSON-nal, de ez manapság már nem olyan vészes hátrány. A kliensnek kiküldeni a JSON-t mindennapos feladat (viszont ilyen esetekben egy csomó más függőséget is bele érdemes foglalni a kiküldött adatszerkezetbe, ami már nem olyan triviális, mint első ránézésre)
Viszont szerver oldalon egy kellemesen bonyolult JSON-t visszaolvasni nem mindennap szoktunk.
Aztán pár fokkal macerásabb egy viewmodel-en keresztül jelezni a validációs megjegyzéseket a kliens oldal felé, mint hagyományosan.
De a fentebb említett hátrányokra látszik, hogy születnek a megoldások, egyre több a knockoutjs extension pl. validációra is van már.A knockoutjs abszolút nem kiváltani hivatott a jquery-t. Sőt jquery nélkül csak félkarú óriás (mondhatni kis túlzással, el sem indul). Ha belenéztél a linkelt tutorialban, tele van jquery-vel
-
v2izzy
tag
válasz
Sk8erPeter #575 üzenetére
Azért van felkiáltójel, mert ha anélkül hívod meg a closure-t, akkor lehet hogy SyntayError-t ad. Bővebben
-
Sk8erPeter
nagyúr
válasz
Speeedfire #578 üzenetére
Nekem egy, a tapiképernyő miatt magát okosnak mutatni akaró, de valójában elképesztő ostoba egy fos KP500-am van. Nem ajánlanám senkinek, de azért a lényegi funkciót ellátja, telefonálni lehet vele.
-
Speeedfire
félisten
válasz
Sk8erPeter #575 üzenetére
Így a ficsőr.
Ha anno nem hal meg az SE W610i akkor még nekem is buta telóm lenne, de sajna nem bírta már.
-
Sk8erPeter
nagyúr
Milyen hátrányai vannak? Csak érdeklődésképp.
"Viszont biztos vagyok benne, hogy mint a jquery 1-2 évvel ezelőtt, a knockoutjs hamarosan berobban a webalkalmazás fejlesztés világába, és "villám gyorsan" kvázi standard lesz."
Azért ez szerintem bátor előrejelzés. Szóval szerinted KnockOuttal győz a jQuery ellen?
A jQuery ma már olyan szinten népszerű, hogy azért nem lesz egyszerű kiütni.
Mondjuk az előbb linkelt cikk épp így kezdi: "Knockout is not meant to be a replacement for jQuery". (Még nem olvastam el a teljes cikket, de kíváncsi vagyok rá.)Számomra ez is új infó:
"In the red corner, weighing in at just 29Kb (uncompressed), is knockout.js; a pure JavaScript library that simplifies the creation of dynamic user interfaces. Knockout is library agnostic, so it can easily be used with any of the most popular JavaScript libraries already available, but it works particularly well with jQuery, and uses jQuery.tmpl as its default templating engine."Az utóbbi kiemelt mondat meglepett, mert ahogy korábban tárgyaltuk itt a topicban, azért a jQuery beépített template-ezőjét nem fejlesztik már, így az elavult lehet.
Na, de a lényeg, hogy ezek szerint nem a jQuery kiváltását hivatott szolgálni a KnockOutJS.De én csak a cikkből indulok ki, tapasztalatom nincs e téren, szóval nyugodtan cáfolhatod, ha úgy érzed.
===
"lassan a mobilokban is minimum 1Ghz-s procik figyelnek"
Milyen jó, hogy nemsokára egyedül leszek vele, hogy nekem még mindig egy ócska fos butafonom van. -
martonx
veterán
válasz
Sk8erPeter #575 üzenetére
mondjuk látom a hátrányait is.
Viszont biztos vagyok benne, hogy mint a jquery 1-2 évvel ezelőtt, a knockoutjs hamarosan berobban a webalkalmazás fejlesztés világába, és "villám gyorsan" kvázi standard lesz.Jelenleg a webalkalmazásoknál az MVC a nyerő design pattern. Hamarosan az MVVM lesz a nyerő design pattern. C# vonalon (PHP mellett leginkább ebben mozgok) legalábbis még idén átveszi a stafétabotot az MVC-től, az tuti (mondjuk rokonok, nincs nehéz dolga átvenni). Új fejlesztő eszközök jelennek meg, illetve a hardveres világban szétnézve már lassan a mobilokban is minimum 1Ghz-s procik figyelnek, év végére pedig teljesen elterjedtek lesznek a 2 magos mobilok.
Mondjuk én sajnos pont az a típus vagyok, akinek nem igazán van ideje elmélyedni egyik technológiában sem, annyi mindent csinálok párhuzamosan.
-
Sk8erPeter
nagyúr
válasz
Speeedfire #574 üzenetére
Az ilyen mondjuk néha nem túl kellemes.
Az OTP honlapjánál van ugyanilyen fícsör jobb oldalt, az OTPDirektbe való bejelentkezésnél, eleinte zavart, hogy alapból mindig nyomok egy Tabot az inputok kitöltése után, de ez megteszi helyettem is, így volt, hogy pont átugrottam a köv. mezőt. Mondjuk azóta megszoktam, de eleinte szar volt.(#573) v2izzy :
Mi az oka annak, hogy a function előtt van egy felkiáltójel?
így:
!function($)(#568) martonx :
valóban jónak tűnik, még tapasztalatom nincs vele, kis pubi vagyok még...
Majd erre is sort kerítek. -
v2izzy
tag
válasz
Speeedfire #572 üzenetére
Szerintem ez így elég kényelmes (számomra
)
Pórbáld ki!
(szerk.: rövidült)
-
Coyot
őstag
válasz
Speeedfire #569 üzenetére
nem kell hozzá jquery gyárilag tudja a html
azaz csak tab nyomásra ugrik, automata ugrás szerintem annyira nem jó.
-
Speeedfire
félisten
Van valami olyan kód, jobban mondva ismer valaki olyan, hogy ha xyz mező ki van töltve akkor a következőre ugrik?
Adott egy telefonszám form:
+36/ select 3szám input, 4 szám input. Tehát ha kitölti a körzetszámot akkor átugrik a következő 3-asra, ha az is ki van töltve, akkor a 4-esre. Gondoltam írok egy bind-es cuccot rá, de ha van akkor inkább az használom. -
martonx
veterán
válasz
Sk8erPeter #565 üzenetére
én akkor már inkább knockoutjs-t használnék, ha bonyolult form UI, és annak mindenféle egymással függésben lévő eseményinek kezelése lenne a cél.
Elképesztően elegáns. Másrészt egy kellemesen bonyolult viewmodel-lel már lehet szívni azért rendesen.
-
Speeedfire
félisten
válasz
Sk8erPeter #565 üzenetére
Khhhmmm, eddig miért nem linkelted ezt a SheepIt!-et?
Jónak tűnik a cucc.Amúgy igen, a [] zárójel az kell, mert ellenkező esetben csak felülírja.
-
Sk8erPeter
nagyúr
válasz
Sk8erPeter #530 üzenetére
A korábbi példánál egy tömbös megoldás szerveroldalon praktikusabb (name-nél szögletes zárójelek ([])):
http://jsfiddle.net/Sk8erPeter/RqYYj/Formelemek klónozására ez is egész használhatónak tűnik:
SheepIt!Csak a teljesség kedvéért jsFiddle demo az oldal alapján (basic demo):
http://jsfiddle.net/Sk8erPeter/33n9Y/ -
Speeedfire
félisten
válasz
Speeedfire #563 üzenetére
Na, lol...ennyi hülyeség után...a data résznél nem írtam oda az & jeleket...
$("#helyszin").on("keyup click", $("#helyszin option"), function() {
var megye = $("#Hirdetes_megye").val();
var telepules = $("#Hirdetes_telepules").val();
var kategoria = $("#Kategoriak_kategoria").val();
var submit = $("#helyszin :submit").val();
var submitnev = submit.split(" ");
$.ajax({
url: "'.Yii::app()->baseUrl.'/hirdetes/ajaxcount/",
type: "POST",
async: false,
data: "megye="+megye+"&telepules="+telepules+"&kid="+kategoria,
success: function(data) {
//alert(data);
$("#helyszin :submit").val(submitnev[0]+" "+data);
}
});
}); -
Speeedfire
félisten
Jövök ismét kunyerálni segítséget.
Adott egy ajax lekérés, ami semmit sem ad vissza...az érdekes, hogy van egy másik ajax az oldalon az meg megy...
$("#helyszin option").bind("keyup click", function() {
var megye = $("#Hirdetes_megye").val();
var telepules = $("#Hirdetes_telepules").val();
var kategoria = $("#Kategoriak_kategoria").val();
var submit = $("#helyszin :submit").val();
var submitnev = submit.split(" ");
$.ajax({
url: "'.Yii::app()->baseUrl.'/hirdetes/ajaxcount/",
type: "POST",
data: "megye="+megye+"telepules="+telepules+"kid="+kategoria,
success: function(data) {
alert(data);
$("#helyszin :submit").val(submitnev[0]+" "+data);
}
});
});Azt csinálja elvileg a kód, hogy ahogy állítgatom be listából az értékeket, a keresés gomb végére mindig kiírja, hogy épp mennyi elem van a keresési feltételek alapján.
Be linkelem azért az ajaxkérést is, de $_GET-el ment a dolog. Mármint ajax nélkül.
public function actionAjaxcount() {
if(isset($_POST)) {
$condition = new CDbCriteria();
foreach ($_POST as $tomb=>$value) {
$condition->addColumnCondition(array($tomb=>$value));
}
$ertek = Hirdetes::model()->count($condition);
echo $ertek;
}
}Hogy lehetne ezt debuggolni? Ha az értékeket akarom megnézni alert-el akkor semmit sem dob vissza. De maga a select az megy, szép nagy tömböt ad vissza.
-
martonx
veterán
válasz
Sk8erPeter #559 üzenetére
Hát igen, többet kellene Jquery-znem, és akkor több dolog lenne számomra kapásból triviális.
Az .on() kiváltását csak mint egy lehetőség írtam. Eddig mindig automatikusan .on()-nal kezeltem le az AJAX-olt elemek eseményeit, és nem gondoltam arra, hogy az ajax callback-jében .on() nélkül is le lehet kezelni, ami egyébként logikus.
A kódomon nyilván sokat lehetne még finomítani, lekezelni az esetleges hibákat (mind ajax, mind DOM oldalon), a példa kedvéért raktam be, hogy látszódjon kb. mit is szerettem volna.
Az általad javasolt megoldás is működik, ebből is látszik, hogy sokszor nincs csak egyetlen üdvözítő megoldás. -
Speeedfire
félisten
Hogy tudok legördülő listát kijelölni?
$("#listak :select").bind("keyup click", function() {
Adott 3 lista, amit figyelni szeretnék, de a :select ugye...oda kellene valami más.
Szerk.: option.
-
Sk8erPeter
nagyúr
Őszintén szólva nem nagyon értem, mi ebben a meglepő.
Az is működik, ha az .on()-nal oldod meg (!!), és arra kötöd rá, és az is működik, ha a callback-be beteszel akár egy eleve létező függvényt, ami végrehajtja azt a feladatot, hogy felülírja a text típusú input fieldek felülírását. Ezen a függvényen belül meg a biztonság kedvéért nyilván nem árt ellenőrizni, hogy a DOM-ban van-e már egyáltalán az elem.Amúgy még úgy emlékszem, trükközéssel az is működik, hogy mondjuk ezt csinálod, hogy nem adod hozzá a látható elemekhez, hanem ilyet alkalmazol (de most nem próbáltam, csak úgy rémlik, lehet ezt a trükköt alkalmazni, és már csináltam is):
$.post(url, { params }, function (data) {
var $myStuff = $(data);
$myStuff.find('form :input').each(function () {
//ide jöhet a manipuláló kód
});
$myStuff.appendTo('#detail');
});De mondom, ez utóbbira nem adnám a nyakam, hogy pontosan így működik, de hasonló módszer tuti van rá. Azért ezt is kipróbálhatod, ha gondolod (csak az érdekesség kedvéért).
-
martonx
veterán
válasz
Speeedfire #556 üzenetére
hja, néha jobb rá aludni egyet.
brutál dolgokat lehet a HTML5-ös funkciókat kihasználva összerakni jquery-vel. -
martonx
veterán
hopsz, a fenti példa nem volt tökéletes. Ez a jól működő megoldás, mert előbb hozzá kell adni a DOM-hoz a data-t. Az előző kódom akkor lett volna jó, ha csak replaceltem volna valami szöveget a data-ban.
$.post(url, { params }, function (data) {
$("#detail").html(data);
$('form :input').each(function () {
//ide jöhet a manipuláló kód
});
});A trükk az, hogy $('form :input').each(function () { //ide jöhet a manipuláló kód }); csak és kizárólag az ajax callback-jén belül működik. Azon kívül a dinamikusan hozzáadott DOM elemek már nem elérhetőek selector-okkal.
Ily módon a .on()-is kiváltható pl. azzal, ha az eseményt rögtön a callback-ben hozzáadjuk a dinamikus elemekhez -
martonx
veterán
és meg is van a megoldás. Magának a .post()-nak a futásakor kapott data-t kell manipulálni ilyen esetekben. Példa:
$.post(url, { params }, function (data) {
var $input = $(data).find(":input[type=text]");
$input.each(function (elem) {
//kód jöhet ide
});
$("#detail").html(data);
});Hátha megkímélek másokat némi szívástól, guglizástól ezzel a megoldással .
-
martonx
veterán
Nem voltam elég világos. Akkor a teljes történet.
Adott egy master-detail felület.
Master - egy jquery-s datagrid.
Detail - master megfelelő sorára kattintva ajax-al betöltődő form.
A detail változtatásait localstorage-ba mentem (.on használatával - hahó), hacsak nem nyom rá a user a mentés gombra.
És itt jön a problémám. Amikor már van a localstorage-ben adat az adott detail-hez, azzzal felül kellene írnom az ajax-ban kapott inputok értékeit.
Csakhogy ekkor nem tudom az .on()-t használni, mert azzal eseményeket lehet mappelni a dinamikus DOM elemekhez. Én viszont nem eseményt akarok, hanem egy szimpla $('#myform :input') select-orral végigmenni az inputokon, hogy a localstorage alapján felülírjam a value-jukat.
Mivel a #myform ajax-al jött létre, ezért simán selectálni nem lehet.
Nos milyen trükkel lehetne ezt megoldani? -
Sk8erPeter
nagyúr
válasz
Speeedfire #551 üzenetére
+1
-
martonx
veterán
Sziasztok!
Van egy ajax-al betöltött formom, amit egy div-be töltök bele.
Vajon miért nem tudok ezek után jquery-vel erre az új formra hivatkozni? Hihetetlen. Mit szúrhatok el? -
Jim-Y
veterán
válasz
Speeedfire #548 üzenetére
Update, de még mindig nem az igazi ... [link]jah, látom a keyup mégjobb, nem szóltam
-
Sk8erPeter
nagyúr
Meg mondjuk az sem ártana, ha az ('#egy') és a ('#ketto') ELŐTT lenne egy dollárjel, vagy egy jQuery kulcsszó...
Érdekes, most jsFiddle-ben én sem tudok & jelet írni, csak ha máshova írom, aztán bemásolom oda...Egyébként igen, működik a dolog, csak az egy igen nagy hátránya, hogy előbb ki kell töltened mindkettőt, majd nem keyupra reagál, hanem újból bele kell kattintanod a div-be, hogy végül az "extra" megjelenjen...
Itt a "működő": [link].
-
martonx
veterán
válasz
Speeedfire #545 üzenetére
mondjuk szintaktikai hibák nélkül?
if(("#egy").val() != "" andand ("#ketto").val() != "") {
$("#extra").show();
}andand - két és jel akart lenni, csak innen valamiért épp nem sikerül és jelet produkálnom.
Az inputba kattintásról sem vagyok meggyőződve, hogy ezt így el lehet-e kapni, nem-e fókusz adásnak számít. -
Speeedfire
félisten
Ezt a példát, hogy lehetne megoldani? Adott jelen esetben 2 input mező és csak akkor jelenne meg az extra div ha mind a kettőben van tartalom.
-
Sk8erPeter
nagyúr
Hátha másnak is hasznos lesz, akinek nincs kedve kézzel hekkelgetni a file típusú input kinézetét: File Style Plugin
Készítettem róla jsFiddle-demót: http://jsfiddle.net/Sk8erPeter/JEVgF/. -
Speeedfire
félisten
Huh, pedig nekem is rémlik valami ezzel az on()-al kapcsolatban, hogy már egyszer kitárgyaltuk.
Át is írom. -
Sk8erPeter
nagyúr
Na basszus, erre magamtól is rájöhettem volna hülyeségek kérdezgetése előtt.
Köszi!
Akkor viszont egyértelmű, hogy a delegate-nél meg on-nál jellemző selectorra való szűkíthetőség teljesítmény szempontjából sokkal jobb lehet, mint az, ami a .live()-nál jellemző, hogy az egész documentre kötjük rá (hatalmas dokumentumnál gondolom jól kijöhet a különbség bencsmárkokkal).===
Amúgy nem tudom, észrevettétek-e, de a jQuery oldala nagyon sokszor szarakodik mostanában, van, hogy egyszerűen nem érhető el a szerver. Előbb megint meg akartam nézni a doksit, és az oldal már megint behalt.
Most megnéztem cache-ből, ott tényleg látszik, amit írtál (korábban már én is kimásoltam ezt a részt, nem tudom, most miért voltam olyan agyatlan, hogy ezt elfelejtettem):
"Rewriting the .live() method in terms of its successors is straightforward; these are templates for equivalent calls for all three event attachment methods:
$(selector).live(events, data, handler); // jQuery 1.3+
$(document).delegate(selector, events, data, handler); // jQuery 1.4.3+
$(document).on(events, selector, data, handler); // jQuery 1.7+"Én azért kitettem az idézőjeleket, nem úgy, mint - most már - egykori köztársasági elnökünk.
-
Karma
félisten
válasz
Sk8erPeter #540 üzenetére
Hát azért, mert a jó öreg live magától a documenthez csatolja az eseménykezelőt, az előtte kapott selectort csak kiveszi a jQ wrapperből és felhasználja sátáni terveihez
(az API doksi említi, hogy a $(selector).live(events, data, handler) hívás ekvivalens a $(document).on(events, selector, data, handler); hívással).
-
Sk8erPeter
nagyúr
válasz
Sk8erPeter #538 üzenetére
Aha, javítottam .on()-ra, csak rosszul.
Itt a jól működő változat .on()-nal:
http://jsfiddle.net/Sk8erPeter/RqYYj/Közben rájöttem, hogy miért nem működött, azért, mert előtte így csináltam:
$(".del.enabled").on("click", function(event) {
var $parent = $(this).parent();
$parent.remove();
return false;
});HELYETTE ez a jó:
$("body").on("click", ".del.enabled", function(event) {
var $parent = $(this).parent();
$parent.remove();
return false;
});
VAGY MÉG JOBB (http://jsfiddle.net/Sk8erPeter/RqYYj/1/):
$(".stuffs_wrapper").on("click", ".del.enabled", function(event) {
var $parent = $(this).parent();
$parent.remove();
return false;
});Utóbbinál kevesebbet kell rohangászni a DOM-fában.
A magyarázata, amiért így kell megoldani:
.on() hivatalos doksi:"Note that .on() allows a click event on any paragraph--even new ones--since the event is handled by the ever-present body element after it bubbles to there."
A $(".del.enabled") selector pedig nincs mindig jelen a DOM-ban, pont ez fog a jövőben létrejönni, a gombnyomás hatására.
Legalábbis gondolom, hogy így magyarázható, de javítson ki valaki, ha ez ebben a formában pontatlan.
DE azt magyarázza már el valaki plíz, hogy ugyanez miért működik .live()-val:
http://jsfiddle.net/Sk8erPeter/RqYYj/2/============================================
Szerk.:
(#539) Karma :
igen, megelőztél, mert közben jó hosszan megírtam ezt a hsz.-t...
Inkább a fentire találj nekem magyarázatot, hogy miért működik pontosan ugyanez a régi öreg .live()-val! -
Karma
félisten
válasz
Sk8erPeter #538 üzenetére
Nálam (Chrome 18.0.1025.142 m) a 8-as verziód nem töröl.
Igazából meg se hívódik a click handler - szerintem az on-t nem így kell nemlétező elemekre attacholni, hanem inkább a body-ra, és utána rászűrni. Mondjuk így -
Sk8erPeter
nagyúr
válasz
Speeedfire #535 üzenetére
Ezt tényleg nem értem, tegnap hiába kattyogtam a del-re, nem ment. Most nyomattam egy újraindítást, és oké.
Na most hirtelen erre nem vágom a magyarázatot, de lehet, hogy a túl sok fül volt az oka (mondjuk akkor miért ment az enyém?).
Mindegy, lényeg, hogy végül is úgy tűnik, ez is működőképes, szóval bocs, ezek szerint tévesen mondtam, hogy nem megy a törlés. A fenti szempontok viszont szerintem állnak.(Az elfogultság a saját kódommal szemben.
)
Szerk.: bár itt már korábban volt szó róla, a .live() már régóta deprecated. Az .on() viszont nem, 1.7-től felfelé az az ajánlott.
Szóval nekem is a .delegate() helyett az .on()-nal kellett volna csinálnom, de tegnap az sem ment valami fentebbihez hasonló megmagyarázhatatlan okból (nem vágom), ezért az enyémet is javítottam:
http://jsfiddle.net/hYRDs/8/ -
martonx
veterán
válasz
Speeedfire #529 üzenetére
mondjuk, ha ezzel kezdted volna, jóval érthetőbb lett volna a problémád.
-
Speeedfire
félisten
válasz
Sk8erPeter #534 üzenetére
Ugyan azt a kódot nézzük?
IE9 komp.mód, chrome 18, FF11 alatt is megy. Opera az nincs fent.jsFiddle alatt néztem.
-
Sk8erPeter
nagyúr
válasz
Speeedfire #533 üzenetére
Működik Firefoxban (11.0).
De akkor próbáld ki Operában (11.61), IE8-ban, Chrome-ban (18.0), b@szik működni. Elég meggyőző?
Legalábbis a jsFiddle-ön fent lévő kód ezekben a böngészőkben nem megy.
Localhoston vagy máshol nem próbáltam.Az enyémet mindegyikben próbáltam, mindegyikben működik (jsFiddle felületén is).
-
Speeedfire
félisten
válasz
Sk8erPeter #532 üzenetére
Már, hogy ne működne a törlés funkció? Megy az.
Igen, a prev() valóban jobb megoldás erre. Nekem nem jutott ez eszembe...Dél körül már kiraktam ide a kész megoldást, hogy ne fáradozzon vele senki sem, mert működik a kód, amit írtam.
Köszönöm az általad írt kódot is, remélem nincs harag. -
Sk8erPeter
nagyúr
válasz
Speeedfire #531 üzenetére
Aha, csak kár, hogy még az egyik legalapvetőbb funkció, a törlés sem működik a kódodban...
Meg egyébként én nem sok hasonlóságot vélek felfedezni a kettő között.
Ilyenek nálam nincsenek: $(this).parent().children('.row:first') - ebben eleve felesleges logikai csavar van - ha te az adott elem közvetlen szülőjének "közvetlen" gyermekét keresed, akkor magyarul a testvérelemére vagy kíváncsi. Ilyen nálam pl. úgy van megoldva, hogy a klónozó "gomb" előtti közvetlen elemet klónozom, egy egyszerű .prev() hívással - úgy tűnt, pont ez a célod. A .closest() nyomatása meg itt szerintem szintén nem egy túl biztonságos és általános megoldás - honnan tudod, hogy mondjuk közben máshonnan nem szúrsz be egy elemet. Nálam a kerülő megoldás erre az, hogy a törlésre szolgáló "gomb" eleve a törlendő elem egyik gyerekeleme, így azt nagyobb eséllyel találom el, hogy mi is a cél.Azért annak külön örülök, hogy ezek szerint feleslegesen csesztem el az időt, hogy összehozzak neked valami átlátható és viszonylag általános jellegű kódot... (Mondjuk arra is figyeltem, hogy azért a felülete emberi szemmel értelmezhető legyen, hogy milyen célt is szolgál (lásd pl. ikonok).)
Annyiból mondjuk mindenképp tanulságos az ilyen eset, hogy az ember feleslegesen ne áldozzon a drága idejéből másra, mert lehet, hogy a semmiért szarakodik és kódolgat a nagy segítő szándékával. -
Speeedfire
félisten
válasz
Sk8erPeter #530 üzenetére
Végül én is hasonlóképp oldottam meg itt.
-
Sk8erPeter
nagyúr
válasz
Speeedfire #527 üzenetére
Remélem ez már számodra is elég általános:
http://jsfiddle.net/hYRDs/7/
(a markupot is klónozza, egyedül azzal nem foglalkoztam, hogy itt a törlésre szolgáló X ikon pozíciója elcsúszik) -
martonx
veterán
válasz
Speeedfire #522 üzenetére
ez egy szimpla form. Miért kell bele ilyen varázslat?
-
Speeedfire
félisten
válasz
Sk8erPeter #526 üzenetére
Fent mutattam, id nélkül kellene több class-ra megoldani. Ezért akartam a closets-et használni.
Van több class, amit másolni kell pár ilyen class-nál még okés az egyedi div, de ha már van több akkor csak nő a kód. -
Sk8erPeter
nagyúr
válasz
Speeedfire #525 üzenetére
Te miről beszélsz?
Talán ha érthetően fogalmaznád meg a kérdéseidet....
Akkor komolyan nem értem, mit akarsz. Főleg, hogy mégis mi nem felel meg neked azon a megoldáson, amit mutattam. -
Speeedfire
félisten
válasz
Sk8erPeter #524 üzenetére
Akarja a fene, csak így meg szerintem ezt annyiszor kellene copyzni amennyi féle div van. A linkelt példámban 2 van csak, de ha több lesz akkor...de ötletnek nem rossz, agyalok kicsit rajta. .
-
Sk8erPeter
nagyúr
válasz
Speeedfire #520 üzenetére
Látom szereted túlbonyolítani a dolgokat.
Itt egy lehetséges megoldás: [link].
-
Karma
félisten
válasz
Speeedfire #522 üzenetére
Hát a leírás és a kísérleteim alapján is a closest testvéreket nem keres (se a kezdőelemnél, se a szülők esetében), csak felfelé lépked a DOM fában. Úgyhogy struktúráld át máshogy a HTML-t.
-
Karma
félisten
válasz
Speeedfire #520 üzenetére
Az nem egészen világos, hogy a closesttel mit akarsz csinálni, de az biztos, hogy egy jQuery objektumhoz nem a + operátorral tudsz spant hozzácsapni
-
Speeedfire
félisten
Akarok csinálni egy ilyent, de nem akar menni.
A lényege az lenne, hogy ha a makeinputra kattintok, akkor a hozzá közelebb lévő row div-et bemásolja az extra div-be. Ha az újonnan létrehozott row melletti del mezőre kattintok akkor pedig törli azt. De nem csinál semmit. Ötlet? -
Speeedfire
félisten
válasz
Sk8erPeter #518 üzenetére
Ja, hát van benne valami.
-
Sk8erPeter
nagyúr
válasz
Speeedfire #517 üzenetére
Ha senki nem kérne segítséget vagy tapasztalat-megosztást, kihalnának a fórumok.
Mondjuk akkor is, ha mindenki csak segítséget kérne.
-
Speeedfire
félisten
válasz
Sk8erPeter #516 üzenetére
Ja, hát én csak művelődni járok fel. Meg néha segítségért kuncsorogni.
-
Sk8erPeter
nagyúr
válasz
Speeedfire #515 üzenetére
Az még mindig jobb, mint a write-only mode.
-
Speeedfire
félisten
válasz
Sk8erPeter #514 üzenetére
Igen olvastam a topicban, néha read onlyban megnézem miről beszélgettek.
-
Sk8erPeter
nagyúr
válasz
Speeedfire #513 üzenetére
-
Speeedfire
félisten
válasz
Sk8erPeter #512 üzenetére
Végül is...de akkor is. Egyéb script fájlok behúzása is alapból. Kezdem egyre jobban megkedvelni ezt a yii-t.
Bár még az api felét sem ismerem, amit viszont igen az nagyon bejön. -
Sk8erPeter
nagyúr
válasz
Speeedfire #511 üzenetére
Szerintem ez nem olyan fura.
Végül is ez egy keretrendszer... -
Speeedfire
félisten
Köszi mindkettőtöknek, végül én is a yii oldalán találtam meg. Fura, külön erre is van metódusuk.
-
Sk8erPeter
nagyúr
válasz
Speeedfire #508 üzenetére
-
Karma
félisten
válasz
Speeedfire #508 üzenetére
Itt, az első válaszban ott van, hogy tudod dinamikusan betölteni a jQuery-t. Ha ezt a blokkot egy egyszerű if alá teszed - if (jQuery === undefined) { ... } -, akkor meg is kaptad amit írtál.
Például a HTML5 Boilerplate ilyesmi megoldást használ.
Addendum: nem tudom mi az a Yii, ezért az általános megoldás.
-
Speeedfire
félisten
Kis galiba akard velem és a yiiframework-kel.
Egyes oldalakon alapból behúzza a jquery-t ő maga, meglehet valahogy oldani azt, hogy ha nincs betöltve a jquery, akkor húzza be az általam deklarált jquery fájlt? -
ubid
senior tag
válasz
Speeedfire #505 üzenetére
Köszi! ez tökéletes lesz !
-
Sk8erPeter
nagyúr
válasz
Brown ügynök #498 üzenetére
Nem ártana látni a teljes kódot, hogy ezek a változók egyáltalán honnan jönnek.
Pl. van a create függvény:create : function () {
var access;
access = this.get_upload_rights(obj);
......
};Itt az "obj" nevű változót (objektumot) mégis honnan kapja? Honnan kéne annak ismertnek lennie? Lehet, hogy egyszerűen undefined-ot ad át ebben a formában a get_upload_rights függvénynek...
Meg azt én sem értem, hogy a get_upload_rights-ban a $obj már megint honnan jön, amikor elvileg csak az "obj" nevű változó lenne ismert, ha átadnád a függvénynek egyáltalán.
De ugye nem látjuk, hogy vannak-e mondjuk ilyen nevű globális változók... -
ubid
senior tag
Helló!
Valaki nem tud egy olyan plugin-t ami egy olyan textarea-t ad , aminek a szövege gazdagon formázható ?
Tehát mondjuk szöveg vastagítás, betűtípus.. stb.stb.
-
Brown ügynök
senior tag
Ezt most jegelem, megoldom másképp. Nem értem, ha a get_upload_right fv. visszahívom miért nem vesz figyelembe semmit feltételt. Egyébként nem volt teljes a kód. A get_upload_right fv.t a __callback fv. hívja vissza / meg, ami egy ajax kérés után hívja vissza a get_upload_right-t .
-
martonx
veterán
válasz
Brown ügynök #500 üzenetére
A $obj és az obj nem lehet, hogy elírás, és ez miatt nem teljesül az if feltétele?
Új hozzászólás Aktív témák
- INGYEN POSTA - ÚJ GAMER PC V111 DDR5 -i5-14400F -RTX 5060Ti -16GB RAM -1TB SSD -www.olcsogamerpc.hu
- INGYEN POSTA - ÚJ GAMER PC V100 - i5-12400F - RTX 5060Ti - 16GB RAM - 1TB SSD - www.olcsogamerpc.hu
- INGYEN POSTA - ÚJ GAMER PC V81 - DDR5 - i5-14400F -RTX 5060 -16GB RAM - 1TB SSD -www.olcsogamerpc.hu
- INGYEN POSTA - ÚJ GAMER PC V61 -DDR5 - i5-14400F -RTX 4060Ti -16GB RAM -1TB SSD -www.olcsogamerpc.hu
- INGYEN POSTA - ÚJ GAMER PC V54 - RYZEN 7 5700 - RTX 4060Ti - 16GB RAM - 1TB SSD -www.olcsogamerpc.hu
- Keresünk dokkolókat
- GYÖNYÖRŰ iPhone 13 mini 128GB Starlight -1 ÉV GARANCIA - Kártyafüggetlen, MS3133, 95% Akkumulátor
- Samsung Galaxy A21s 32GB, Kártyafüggetlen, 1 Év Garanciával
- Samsung Galaxy A20e // Számla // Garancia // Ajándék töltő //
- BESZÁMÍTÁS! Microsoft XBOX Series S 512GB játékkonzol garanciával hibátlan működéssel
Állásajánlatok
Cég: CAMERA-PRO Hungary Kft.
Város: Budapest
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest