Új hozzászólás Aktív témák
-
A .bind() nem delegál eseményt, csak a .live() és a .delegate() tudja ezt, legalábbis az én értelmezésemben. Delegálni akkor szoktunk, mikor még nem érhető el az adott elem a contextben. Azt is hozzátenném, hogy a .click() és hasonlók helyett érdemesebb a .live()-ot használni (ha lehet [pl. traversal metódusokat nem lehet használni arra, hogy elemeket keressünk a .live()-nak]), mert gyorsabb, viszont a .live() helyett meg jobb a .delegate() szintén a sebesség miatt, csak utóbbit néha körülményes használni.
---
SpeeedfireSzerintem ez a kód azt csinálja, mint a tiéd, csak rövidebben és gyorsabban.
$(document).ready(function() {
$(".hiremail").focus(function () {
$(this).val('').css('color', '#000').css('border-color', 'green');
})
.blur(function () {
var t = $(this);
if (t.val() == ''){
t.val('email cím...');
}
t.css('color', '#777').css('border-color', '#EEE');
});
});[ Szerkesztve ]
-
jeges
senior tag
válasz Peter Kiss #151 üzenetére
a magam részéről kicsit általánosabban a bubbling kihasználását értem alatta, azaz hogy nem a célelemen fogom meg az eseményt, hanem a szülőjén. ettől lesz kezelhetőbb, gyorsabb az egész (pl. egy néhányszáz soros rácson ha minden cellára listenert raksz, az baromi lassú, míg egyetlen listenerrel a tábla elemen ugyanaz a hatás elérhető).
szerk: most, h előkerült utánanéztem, és valóban a jq-sok megkülönböztetik a rebinding-et a delegation-től, ahgy Te is írtad.
[ Szerkesztve ]
-
-
jeges
senior tag
válasz Peter Kiss #153 üzenetére
erre jó bármelyik másik eseménykezelő eljárás is. ha jq nélkül, simán js-ben definiálsz egy .onclick függvényt, az is el fogja kapni az elem gyerekeinek a click-jeit (hacsak nem akadályozod meg külön a programkódban). erre az "elkapásra" írtam fent példát.
-
Brown ügynök
senior tag
A képen látható body-ba szeretnék tartalmat írni jQueryvel:
Ezekkel próbálkoztam, de nem ment:
$("#cke_contents_editor").children('body').html(sablon);
$(".cke_show_borders").html(sablon);[ Szerkesztve ]
"hacsak nem jön a jó tündér break utasítás képében..."
-
jeges
senior tag
válasz Brown ügynök #155 üzenetére
-
válasz Brown ügynök #155 üzenetére
$('iframe').first().contents().find('body').append('<img src="' + elem + '"/>');
Így használom (majdnem) egy CKEditor-nál képbeszúrásra.
[ Szerkesztve ]
-
Brown ügynök
senior tag
Köszi mindkettőtöknek.
"hacsak nem jön a jó tündér break utasítás képében..."
-
Speeedfire
nagyúr
Kis jquery gondok van, a neten találtam egy egyszerű jquery kódot a lenyíló menünek. Viszont nem működik megfelelően.
$(document).ready(function(){
$('.dropdown').mouseenter(function(){
$('.sublinks').stop(false, true).hide();
var submenu = $(this).parent().next();
submenu.css({
position:'absolute',
top: $(this).offset().top + $(this).height() + 'px',
left: $(this).offset().left + 'px',
zIndex:1000
});
submenu.stop().slideDown(300);
submenu.mouseleave(function(){
$(this).slideUp(300);
});
});
});Valami miatt nem jó helyen jeleníti meg a lenyílő füleket. Jelenleg kicsit belenyúltam a top és a left definiálásánál, de így csak hd felbontásban van jó helyen. Hogy lehetne megoldani, hogy a megfelelő helyen jelenjen meg?
[A teszt oldal]Illetve ha lenyílik a menü akkor jobbra is elmozdul még, de ezt nem is értem, hogy miért mert a jquery-ben nincs ez deklarálva.
Fotóim https://fb.com/toth.szabolcs.art || IG: http://instagram.com/_tothszabolcs_ || Weblapom http://szabolcs-toth.com
-
martonx
veterán
válasz Speeedfire #159 üzenetére
Ha az Ügyfeleinknek, és a Leendő Ügyfeleinknek menük lenyílására gondolsz FF6 alatt teljesen szépen működnek.
Nem valami böngésző specifikus probléma lesz itt?Én kérek elnézést!
-
Speeedfire
nagyúr
Chrome alatt tesztelgetem, de pl ie alatt már ugyanebben a felbontásban is gond van.
Próbáld meg azt hogy összehúzod az ablakot mondjuk fele akkorára. Már nem lesz jó.
Valami miatt, rosszul veszi fel a css adatokat.Fotóim https://fb.com/toth.szabolcs.art || IG: http://instagram.com/_tothszabolcs_ || Weblapom http://szabolcs-toth.com
-
válasz Speeedfire #162 üzenetére
Az ilyen hibákra a megoldást az jelenti, he első körben eltünteted a JS kódot, és csak a CSS marad meg. Ha úgy okés, akkor utána lehet effektelni.
-
jeges
senior tag
válasz Speeedfire #159 üzenetére
nem merültem el nagyon a kódban, de számomra legalábbis meglepő az a megoldás, hogy a menüsoron minden li elemnek saját ul-ja van. biztos, hogy ez volt az elképzelés? első blikkre azt gondolnám, egy legördülő menünek egy ul-ban vannak li tagjai, és az almenük ezeken belül további ul, ill li tagok szoktak lenni. nagyjából így:
<ul>
<li><a></a></li>
<li><a></a></li>
<li><a></a></li>
</ul>persze lehet, hogy én néztem el valamit.
a fenti ul-ok egyébként is valami miatt 0*0 pixelesek, ez sem biztos, hogy így kóser, de csak találgatok.
ennél mindenesetre láttam már egyszerűbb megoldást, számomra fura ez a plusz li tag beszúrás, mer' úgy tűnik, feleslegesen piszkálja a program a dom-ot.
-
Speeedfire
nagyúr
válasz Peter Kiss #163 üzenetére
De js nélkül nem is látom ezeket az elemeket. Nem tudom mi lenne az elegánsabb megoldás, ami praktikus is.
jeges: A forrás szerint mindegyik külön ul között van.Fotóim https://fb.com/toth.szabolcs.art || IG: http://instagram.com/_tothszabolcs_ || Weblapom http://szabolcs-toth.com
-
jeges
senior tag
válasz Speeedfire #165 üzenetére
hja, látom.
az viszont esetleg lehet válasz az elcsúszásra, hogy a te tesztoldaladon minden li a sor elején van, az eredetiben pedig sorban egymás után. a float:left hiányzik nálad, ettől sorakoznak fel egymás mellé a li tag-ek.(azt továbbra sem értem, mi szükség erre a rengeteg ul-ra.)
-
Speeedfire
nagyúr
-
jeges
senior tag
válasz Speeedfire #167 üzenetére
én azt mondom, minél egyszerűbb, annál jobb. ha már működik, lehet vele figurázni (fent már írt hasonlót valaki). ez pl egyszerű de nagyszerű, nem köll hozzá js se, csak css. és ha működni fog, még mindig slide-olhatod a megfelelő elemeket.
-
Brown ügynök
senior tag
Előzmény
Akkor folytassuk itt.Itt hova tegyem a kódolást és mit használjak?
$('#cikkszam_s').keyup( function() {
if ( $('#cikkszam_s').val().length == 0) {
// Elrejtjük az ajánlást
$('#suggestions').hide();
} else {
var $cikkszam = $(this).val();
var $url = $("#searchAjaxProNum").val();
$.post($url, {cikkszam: $cikkszam},
function(data){
if(data.length > 0) {
$('#suggProduct').show();
$('#autoSuggProduct').html(data);
}
});
}
});"hacsak nem jön a jó tündér break utasítás képében..."
-
válasz Brown ügynök #169 üzenetére
Ha szerveroldalon tolsz ki header-ben kódolást, akkor azt módosítsd.
Ha a HTML <head> részében meg van adva a kódolás, módosítsd. (És máshol is, pl.: XML)
Az összes fájl (.htm, .html, .php, js, .css, miegymás) karakterkódolását állítsd át latin2-re UTF-8-ról (Notepad2, Notepad++).Ennyi lenne.
-
Brown ügynök
senior tag
válasz Peter Kiss #170 üzenetére
Igen, de itt nem azt írja, hogy utf8-ban küldi az adatokat amit dekódolnom kell?
Data will always be transmitted to the server using UTF-8 charset; you must decode this appropriately on the server side.
"hacsak nem jön a jó tündér break utasítás képében..."
-
válasz Brown ügynök #171 üzenetére
Ehh, valóban.
Erre marad megoldásnak az, hogy szerveroldalon beveted az iconv()-ot, vagy urlencode-olsz kliensoldalon, szerveren meg dekódolsz. (Ezzel is van egy kicsi probléma, iconv() ajánlottabb.)Ettől függetlenül nem árthat megnézni a fentieket (önmagukban megoldást nem nyújtanak a problémádra sajnos), mert néha későn jön rá az ember, hogy valahol el van tolva a dolog.
Ami az ultimate megoldás lenne, az az adatbázis átborítása UTF-8-ba (meg minden másé). Nekem is azért nem volt szem előtt ez a jQuery "megjegyzés", mert weben már UTF-8 a menő, főleg a MySQL 5 óta (HUN collation).
-
jeges
senior tag
válasz Brown ügynök #169 üzenetére
milyen adatbázis? mennyire vannak a kezedben a beállítások?
(csak zárójelben: ez valami migrációs probléma?) -
Brown ügynök
senior tag
válasz Peter Kiss #172 üzenetére
Ez lenne a legegyszerűbb megoldás. De a probléma túl összetett.
Van egy Postgres adatbázis SQL-ASCII kódolással. Van egy vállalatirányítási rendszer Delphiben, és lenne egy egy E-busniess felület amit most csinálok. Nos, az adatbázist dumpolom LATIN9-be. Ezt beillesztem egy UTF8 adatbázisba és akkor nagyjából működika webes rész. Igen ám, de a Delphi nem szereti valamiért ezt az adatbázist: invalid byte sequence for encoding utf8.
Arra gondoltam, először megpróbálom webes oldalról megoldani, de lehet hogy a Delphiben kellene valamit csinálni.
@jeges: Az adatbázis a "kezemben" van.
"hacsak nem jön a jó tündér break utasítás képében..."
-
Brown ügynök
senior tag
A következő a felállás: Két értéket kell behelyezni az ajax által visszaadott válaszból. Azt szeretném, ha onblur hatására szépen lefutó fv. a sablonnevet is behelyezné az inputba, amit most valamiért nem tesz meg.
Ha a sablonnev üres, akkor nem bántaná az input mezőt (tehát a begépelt szöveg megmaradna), ellenben kitöltené a visszakapott értékkel. Ez mintha már működött volna, most leellenőriztem és nem rak be semmit.
<input onblur="fillTemplate();" id="template" />
function fillTemplate(sablon, sablonnev){
$('iframe').first().contents().find('body').append(sablon);
$val = $(sablonnev).val();
if ( $val == ""){
$("#template").val();
}
else{
$("#template").val($val);
}
setTimeout("$('.suggestions').hide();", 200);
}"hacsak nem jön a jó tündér break utasítás képében..."
-
martonx
veterán
-
válasz Brown ügynök #175 üzenetére
onblur-ra paraméter nélkül hívod meg a függvényt, miért is rakna be bármit is, ha mindkét paraméter undefinied?
Másik tipp:
$val = $(sablonnev).val();
if ( $val == ""){
$("#template").val();
}
else{
$("#template").val($val);
}Helyett:
$("#template").val($(sablonnev).val()); -
jeges
senior tag
válasz Peter Kiss #177 üzenetére
ill még egy kieg:
sablonnev (csak számomra?) nem egyértelmű, h maga az input vagy egy változó. a válasz ill a felépítés függvényében kellhet elé a megfelelő kijelölő jel (# vagy .) -
-
Brown ügynök
senior tag
Nem jelez hibát.
@Athlon64++: Nem működik. Egyébként másik fv. esetében müködik a következő szisztéma: function fillTemplate(sablon, sablonnev){
$("#template").val(sablonnev);
}@jeges: A sablon és a sablonnev a visszakapott adat, ergo a változó.
Szerk: $("#template").val(sablonnev); Ez idáig működik. Már csak azt szeretném, hogyha mégsem választ ki egy sablonnevet, a begépelt szöveg ne tűnjön el a sablonnév inputból.
[ Szerkesztve ]
"hacsak nem jön a jó tündér break utasítás képében..."
-
jeges
senior tag
válasz Brown ügynök #180 üzenetére
"hogyha mégsem választ ki egy sablonnevet, a begépelt szöveg ne tűnjön el a sablonnév inputból."
ha jól értem, a sablonnev inputot nem üríti a korábban írt kódrészleted, csak a template-et.
mindegy, sztem ez a három lehetőség van alapvetően:
1) ha a sablonnev változót vizsgálod:
if(sablonnev != undefined && sablonnev != "")$('#template').val(sablonnev);
2) ha a sablonnev id-jű inputot akarod vizsgálni:
if($('#sablonnev').val() != "")$('#template').val( $('#sablonnev').val() );
3) ha a sablonnev változóban tárolt id-jű inputot vizsgálod:
if($('#' + sablonnev).val() != "")$('#template').val( $('#' + sablonnev).val() );
-
-
szmegma
aktív tag
JQUERY KOD:
$(document).ready(function() {
var yOffset = 9;
var xOffset = -25;
$(".dt").hide();
$(".help").click(function(e) {
var preid = $(this).attr("id");
var proid = preid.split('-');
var id = proid[1];
$("#f"+id).css("top", "2px").css("left", "-9px").css("position", "absolute").css("z-index", "9999");
$("#i"+id).css("top", (e.pageY + xOffset)+"px").css("left", (e.pageX + yOffset)+"px").slideToggle("slow");
});
});HTML KOD:
<dt class="dt" id="i0"><img id="f0" src="_/arrow.png">EZ A SZOVEG JELENIK MEG KATTINTASRA</dt><img class="help" id="m-0" src="_/help.png">
<dt class="dt" id="i1"><img id="f1" src="_/arrow.png">EZ A SZOVEG JELENIK MEG KATTINTASRA</dt><img class="help" id="m-1" src="_/help.png">Sziasztok! Keszitettem egy kattintasra elotuno, ujabb kattintasra eltuno scriptet. Ket problemam van:
1, Amikor kattintok es megjelenik a szoveg, akkor ha egy masik hasonlo gombra kattintok es az a szoveg resz is megjelenik nem tudom eltunteni az elozot. A lenyeg, hogy MINDIG csak az a szoveg legyen lathato amelyikre utolsonak kattintottam es ezzel egyidoben tuntesse el az elozot.
2, Amikor kattintok es megjelenik a szoveg, kellene vmi idolimit, hogy ha nem kattint, hogy tunjon el, akkor is tuntesse el mondjuk 5 masodperc utan.A masodik problemamat probaltam setTimeout() fuggvennyel legyozni, de csak fel sikert ertem el: setTimeout("$('.dt').fadeOut();", 5000);
Elsore mukodik, de ha ujbol kattintok ugyan arra a gombra akkor amint megjelenik a szoveg, azonnal el is tunik.Szoval a segitsegeteket kerem, hogyan oldhato meg a fenti ket problema?
Elore is koszonom.[ Szerkesztve ]
TV: JZ1000
-
-
jeges
senior tag
mi okozza a problémát az eltüntetésben? logikailag a már megírt algoritmus használható némi kiegészítéssel:
var proid = $(this).attr("id").split("-");
var id2hide = ( (proid[1] * 1) == 1 ) ? 0 : 1;
var id2show = 1 * proid[1];ahogy megjeleníted a két elemet, úgy a másik kettőt el is tudod tüntetni.
-
szmegma
aktív tag
Bocsi a kesoi valaszert.
Mint irtam probalkoztam a setTimeout() fuggvennyel de nem teljesen ugy mukodik ahogy elvarom.Keszitettem egy teszt oldalt: [link]
Itt lehet probalgatni hogy mi miert nem mukodik. Ez pontos masa az eredetinek.
------------------------------------------------------------------------------------------------------------
A $(this).delay(5000).hide(); reszt is probaltam, ekkor pedig a slideToggle hal meg.
------------------------------------------------------------------------------------------------------------
A var id2hide var id2show resz nem tudom mire lenne jo nekem az eltuntetesben? Mivel ha vki kattint mondjuk az 5. boxra majd a 2. boxra ez a kod nem fogja tudni, hogy az 5. box nyitva van.
------------------------------------------------------------------------------------------------------------Lehet rossz helyre teszem a setTimeout() reszt es azert nem kepes mukodni?
[ Szerkesztve ]
TV: JZ1000
-
jeges
senior tag
nos, nem véletlen, h visszakérdeztem, mer' nem volt egyértelmű, mi okozza a problémát. a kód egyébként bizonyosan tudni fogja, hogy nyitva van-e, ha megkérdezed tőle. pl:
$(".help").each(function(){
if($this.css("display") != "none"){ ... }
});vagy (ha pl nem szereted az .each() -t) hover-re adsz az elemnek egy "hover" (vagy akármilyen) class-t, és azt használod
$(".help").bind("mouseover",function(){ $(this).addClass("hover"); });
$(".help").bind("mouseout",function(){ $(this).removeClass("hover"); });így a fenti helyett:
$(".help").not(".hover").prev().css("display","none"); -
szmegma
aktív tag
Elkeszitettem de most meg jobban osszegabalyodott a cucc.
[ Szerkesztve ]
TV: JZ1000
-
martonx
veterán
jeges az each funkciót az ellenőrzésre értette.
Ami jó is, csak te most már kevered a szezont a fazonnal.
1. Ellenőrizd le, hogy melyik elemre ment a kattintás, ezt még az each előtt (ezt meg is tetted).
2. Majd jöhet az each, ahol először is vesd össze, hogy az adott elem amiben éppen azeach tart az a kattintott-e, vagy sem.
Ha nem a kattintott, akkor tüntesd el a képet, ha pedig pont a kattintott az, akkor jelenítsd meg a képet.Szóval nálad most ez az ellenőrzés hiányzik, mert ami ellenőrzésed van az hülyeség.
Én kérek elnézést!
-
jeges
senior tag
1 a hide() utáni 2 sor szinte biztos felesleges. ha hide-olod az elemet, utána sztem nem kell slidedown+slideup
2 az kavarhat még be, h else ágon van a slidedown+slideup. else helyett az .each utánra tenném, mert csak egyszer akarod végrehajtani.összefoglalva az .each-be csak a hide kell sztem, az eredeti slide-ok az each után külön egyszer végrehajtva.
-
szmegma
aktív tag
Idaig jutottam el: MEGTEKINTES
Jelenleg egy problema kivetelevel mukodik rendesen. Az a bajom, hogy amikor kattintok mondjuk a 4. kerdojelre es megjelenik a 4. box tartalma, ujboli kattintas a 4. kerdojelre azt eredmenyezi, hogy eltunik egy idore a 4. box tartalma de ujbol megjelenik, majd a delay() miatt ismet eltunik.
Hogyan lehetne ezt megakadalyozni, hogy ha nyiott cuccra kattintok akkor az szimplan tunjon el es ne pedig a kodot futtassa?
Probaltam valtozoba helyezni a nyitott box ID-jet de nem sikerult.TV: JZ1000
-
szmegma
aktív tag
Ezzel ugyan ugy nem mukodik es igy problema jelenik meg:
mondjuk nyitott a 4. box es kinyitom a 7. boxot akkor a 4. box nem tunik el.Szerintem valtozoba kellene tenni a nyitott box ID-jet es azt osszehasonlitani a kattintott ID-vel, nem?
Probaltam a h != id de a h nem a nyitott box ID-jet tartalmazza, igy az if<>else ag is ertelmetlen.[ Szerkesztve ]
TV: JZ1000
-
jeges
senior tag
erre megoldás amit fent írtam: katt-ra adsz egy spec class-t a kinyitott elemnek, és azt vizsgálod. id-t is lehet, de a class valamivel rugalmasabb, kevésbé csúf, ha mondjuk törlöd, mint id esetében.
szerk: nézegettem is a kódot, hogy vajon mi az a h változó a névtelen függvényben
[ Szerkesztve ]
-
jeges
senior tag
a legegyszerűbb valszeg az lenne, ha a h != id helyett
preid != $(this).attr(id) - t írnál
ez a feltétel azt jelenti, hogy a klikk célelem és az each-ben éppen vizsgált elem id-je egyezik
ha ez a feltétel nem teljesül (azaz a klikkelt elemnél járunk az each-ben), és a vizsgált elem display-e nem none, az azt jelenti, hogy végrehajtás alatt van a kód. ebben az esetben meg kell szakítani a futást (azaz return false -
szmegma
aktív tag
Amit irsz az tiszta es ertem.
El is keszitem igy a kodot:<script type="text/javascript">
$(document).ready(function() {
var yOffset = 15;
var xOffset = -23;
$(".dt").hide();
$(".help").click(function(e){
var preid = $(this).attr("id");
var proid = preid.split('-');
var id = proid[1];
$(".dt").each(function(){
var postid = $(this).attr("id");
if(preid != postid){
$(".dt").hide();
//alert(postid+"|"+preid);
}
else{
return false;
}
});
$("#f"+id).css("top", "12px").css("left", "-9px").css("position", "absolute").css("z-index", "9999");
$("#i-"+id).css("top", (e.pageY + xOffset)+"px").css("left", (e.pageX + yOffset)+"px").slideDown("slow").delay(2000).slideUp("slow");
});
});</script>Megsem mukodik. Szerintem a $("#f"+id).css("top", "12px").css("left", "-9px").css("position", "absolute").css("z-index", "9999");
$("#i-"+id).css("top", (e.pageY + xOffset)+"px").css("left", (e.pageX + yOffset)+"px").slideDown("slow").delay(2000).slideUp("slow"); resz a baja, hogy nem az each function-on belul van es miutan az lefutott ezek mindenkeppen lefutnak attol fuggetlenul, hogy mi jott vissza az each-bol.
Tevedek?[ Szerkesztve ]
TV: JZ1000
-
jeges
senior tag
de igazad van.
azt nem látom a kódban, hol vizsgálod, hogy display:none igaz-e.
a korábban megbeszéltek szerint akkor kell futtatni a slide-okat, ha
1) az each-ben ahhoz az elemhez értünk, amelyikre klikkeltünk - ez a két id összevetése
2) éppen nincs végrehajtás alatt a kód --> display nem "none"ez alapján a slide-os részt az else ágon belül még egy elágazásba kellene tenni
if ($(this).css("display") == "none"){...} -
szmegma
aktív tag
if(preid != postid){
$(".dt").hide();
//alert(postid+"|"+preid);
}Akarmire kattintok preid SOHA nem lesz egyenlo postid-vel mivel a slide resz az elsebe kerult. Ahhoz, hogy az else ag igaz legyen legalabb egyszer igaznak kellene lennie az else agnak... odogi korbe tettem a kodot...
Abszolut elvesztettem a fonalat.[ Szerkesztve ]
TV: JZ1000
Új hozzászólás Aktív témák
- Acer Aspire 7 A715-72G
- Anker Soundcore Life Q20i Hybrid ANC Bluetooth fejhallgató (Új / bontatlan / 1.5 év garancia)
- Surface 4
- Bomba ár! HP EliteBook 830 G6 - i5-8G I 16GB I 256GB SSD I 13,3" FHD I HDMI I Cam I W11 I Gari!
- Bomba ár! HP EliteBook 830 G5 - i5-8G I 16GB I 256GB SSD I 13,3" FHD I HDMI I Cam I W11 I Gari!