Szelektor generálása Jquery eseményhez.
2018-11-04T23:34:42+01:00
2018-11-06T11:47:08+01:00
2022-08-11T07:45:31+02:00
kalmarr
Sziasztok,

a problémám, hogy nem tudom, hogy lehet-e így megadni az értéket, vagy szintaktikám a hibás.

class="valasz_0", "valasz_1", stb.
ezekre a classokra szeretnék eseményt létrehozni, úgy hogy a "class" szelektorokat én generálom ki.

let idek=0; let classSeged = ""; for (idek=0; 4<idek; idek++){ classSeged = '".valasz_'+idek+'"'; $(classSeged).mouseenter(function(){ $(classSeged).css("background-color", "lightblue");
}); $(classSeged).mouseleave(function(){ $(classSeged).css("background-color", "unset"); }); }
Ha pl: $("valasz_0").mouseenter... ként használom tökéletes, de a fenti formában valamiért nem, pedig a consol.log is "elméleti" szinten ugyan azt az értéket adja vissza, vagy még sem... mi lehet a baj?

Kalmi
Mutasd a teljes hozzászólást!
Ez mindegyikre jó is, csak akkor a div-jeidnek is add meg, hogy "valasz", ne csak azt, hogy "valasz_0" meg "valasz_1".

jQuery addClass example - JSFiddle
jQuery addClass example - JSFiddle
jQuery addClass example - JSFiddle
jQuery addClass example - JSFiddle

Az a gondom, hogy a kérdésed nem csak "profiknak" tűnik egyszerűnek, hanem konkrétan bárki meg tudja oldani, aki minimálisan ismeri a webfejlesztés menetét, és nem csak kísérletezik véletlenszerű kódrészletekkel. Minden könyv, jQuery tutorial, oktatóanyag, stb. elején elhangzik, hogyan kell megoldani. Most ötödszörre hangzott el helyes válasz a kérdésedre, ha még négyszer leírom, sem lesz jobb, a html+javascript+jquery+css kombinálása és összetett feladatok megoldása helyett először inkább a legalapvetőbb dolgokkal kellene megismerkedni, sokkal könnyebb dolgod lenne a későbbiekben.
Mutasd a teljes hozzászólást!

  • A változóban így benne lesz a macskakarom, arra nincsen szükség, vedd ki őket és jó lesz.

    classSeged = ".valasz_"+idek;
    Persze az ide posztolt kódod biztosan nem az, ami a konzolra helyes(nek tűnő) értékeket írt ki, mert itt be sem lépsz a for ciklusba a rosszul megadott feltétel miatt.


    Amúgy simán megérdemelnéd, hogy eltiltsanak a programozástól, amíg meg nem tanulod, hogyan célszerű elnevezni a változóidat. Fájdalmas az ilyen kódokat olvasni. "idek"??
    Mutasd a teljes hozzászólást!
  • ahogy matt383 is irta meg a for-ban a 4<idek sem jo, mivel idek 0-tol novekszik ezert 4<0 nem teljesul igy kiugrik a ciklusbol, helyesen idek<4 vagy 4>idek lenne
    tovabba hasznalhatnal annyit is, hogy valasz "idek" nelkul

    pld.: <div class="valasz valasz_1">
    igy az osszest megtudnad adni for nelkul:

    $('.valasz').mouseenter(function(){ $(this).css("background-color", "lightblue"); })
    Mutasd a teljes hozzászólást!
  • Ha csak annyira kell neki az egész kód, hogy változtassa kurzorra a háttérszínt, akkor az egész macerát meg lehetne úszni css-ből:

    .valasz:hover { background-color: lightblue; }
    Mutasd a teljes hozzászólást!
  • igen tudom, de az mar nem jquery :D
    Mutasd a teljes hozzászólást!
  • Hát 3-4 órás 1000 szeres átírás után egy kicsit már belekavarodtam :)

    Igen, valóban lehet még jobban egyszerűsíteni :). Köszönöm mindenkinek a megoldást :)

    U.I.
    A feladat Jquery-ben megoldani a problémát, amúgy annyira tud koncentrálni az ember, hogy észre se veszem az alap megoldást :)
    Mutasd a teljes hozzászólást!
  • Valóban egyszerűnek tűnik a megoldás, de sajnos nem jó, ezért beszúrom a teljes kódot is... amire gondolok, bár lehet messze van a hibától. 1 vagy hibás függvény meghívás, vagy párhuzamos futás eredménye (később generálódik le az oldal), vagy passz....

    Beszúrom a kódot megnéznétek, hogy a legenerált kérdéseken, miért is nem észleli az egér húzását (.class szelektort)?

    Kódom...

    Köszi!

    Kalmi
    Mutasd a teljes hozzászólást!
  • Mert "valasz_" osztályt írtál a szelektorodba, olyanod meg nincs. Vagy legyen minden div-ednek "valasz valasz_0", "valasz valasz_1" stb. a szelektora és tudsz a "valasz"-ra feliratkozni, vagy CSS [attribute^=value] Selector
    Vagy ezer másik megoldás. Vegyél elő egy tankönyvet és kezdd az elejéről, mert ennek így ebben a formában semmi értelme.
    Mutasd a teljes hozzászólást!
  • Köszönöm a válaszodat, de most még jobban nem értem meg ebből, bármennyire is egszerűnek tűnik a profiknak...

    Ha jól értem amit írsz...
    A "valasz_" osztályt azért írtam, mert javasolták, hogy ne futtasam le egy for ciklusban, mivel elvileg (az én logikám szerint is) a hivatkozásnak elvileg működni kellene...
    A lényeg pedig pont az lenne, hogy 4 db különböző válasz van és ha azok felett elhúzom az egeret, akkor background érték változik. Ha minden válasznak ugyan az az osztálya...

    A for ciklust is próbáltam, de az sem jött össze, illetve az utolsónál működött, logikusan, mivel az utolsó érték lett az utolsó elem... szóval ezért gondoltam erre a megoldásra, hogy ez mindegyik értéknél jó lehet:

    $('.valasz').mouseenter(function(){ $(this).css("background-color", "lightblue"); })
    Persze megadhatnám egyesével is, de az nem tetszik, illetve mi van ha 5 válasz van? :)
    Most már teljesen belekavarodtam...:(
    Mutasd a teljes hozzászólást!
  • Ez mindegyikre jó is, csak akkor a div-jeidnek is add meg, hogy "valasz", ne csak azt, hogy "valasz_0" meg "valasz_1".

    jQuery addClass example - JSFiddle
    jQuery addClass example - JSFiddle
    jQuery addClass example - JSFiddle
    jQuery addClass example - JSFiddle

    Az a gondom, hogy a kérdésed nem csak "profiknak" tűnik egyszerűnek, hanem konkrétan bárki meg tudja oldani, aki minimálisan ismeri a webfejlesztés menetét, és nem csak kísérletezik véletlenszerű kódrészletekkel. Minden könyv, jQuery tutorial, oktatóanyag, stb. elején elhangzik, hogyan kell megoldani. Most ötödszörre hangzott el helyes válasz a kérdésedre, ha még négyszer leírom, sem lesz jobb, a html+javascript+jquery+css kombinálása és összetett feladatok megoldása helyett először inkább a legalapvetőbb dolgokkal kellene megismerkedni, sokkal könnyebb dolgod lenne a későbbiekben.
    Mutasd a teljes hozzászólást!
  • Köszönöm! Most már értem a példákon keresztül (sőt nagyon hálás vagyok a több megoldásért is!).

    Profiknak:
    Nem vitatkozom veled, mert profi vagy és én még messze vagyok tőle :(. Lehet a leírások tartalmazzák ezeket, de a leírás meg a megértés az két különböző dolog. Meg kell izadni érte, hiába van jó leírás, ha valamit másként gondolok, hogy működik, mint ahogyan az valóban megy vagy nem azt keresem látom ami a lényeg.
    No ettől vagy profi, hogy Te érted a dolgokat, én még nem, lehet triviális a dolog, de azért az elakadás az nem véletlen szokott lenni.

    Még egyszer Köszönöm!
    Mutasd a teljes hozzászólást!
Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd