Keresés

Új hozzászólás Aktív témák

  • Sk8erPeter

    nagyúr

    válasz trisztan94 #2835 üzenetére

    Erre írtam, hogy sztem csúf:

    var waypointCounter = 2;
    $('.btn-add-waypoint').click(function() {
    waypointCounter++;
    $('.last-waypoint')
    .after('<div class="form-group waypoint last-waypoint"><label for="waypoints" class="col-md-1 control-label">'+ waypointCounter +'.</label><div class="col-md-11"><input type="text" name="waypoints[]" class="form-control" placeholder="Érkezési hely" /></div></div>')
    .removeClass('last-waypoint')
    .children('label')
    .html(waypointCounter-1 + ".")
    .parent()
    .children('div')
    .children('input')
    .attr('placeholder', 'Megálló ' + (waypointCounter-2));

    });

    Simán túlélhető ez a kód, de szerintem ez esetben ez a láncolás csak rontja mind a kód követhetőségét, mind a bejárhatóságot (persze megközelítés kérdése); meg általában komplett összeállított HTML-kód bedrótozása JS-kódba nem egy túl szép megoldás.

    "de most így hirtelen annyi jut eszembe, hogy az after() tartalmát egy JSON fájlban tárolom, azt rakom bele. Vagy XML, de a JSON-t jobban szeretem, meg sokkal JS-barátabb is."
    Nem értem, ez mire lenne jó. Attól nem lesz szebb a megoldásod, hogy még egy JSON-fájlba (vagy akármilyen másba) is kierőszakolod a tartalmat, aztán még azt az overheadet is ráteszed az egész feladatra, hogy a JSON-t parse-olni is kelljen (egyáltalán nem elhanyagolható, főleg, ha tök felesleges :D), ami után már használhatod a kódot...
    Szóval rossz ötlet.

    "A .waypoint elemek növelését alapvetően úgy csinálnám, hogy egy ciklusba raknám az egészet, ami a waypointCounter értékéig megy, az első és utolsó elem distinct ("különböző"?), a többi csak megálló. Biztos van jobb megoldás, de most hirtelen ez pattant ki a fejemből. (tehát így az előbbi JSON mókázás sem kellene)"
    Ezt nem is értem, mit akarsz megoldani ciklussal. Amikor egyenként kell hozzáadni a DOM-hoz lényegében majdnem minden tulajdonságukban egyező elemeket, akkor hogy jön ide a ciklus? :)

    Több megoldás is létezhetne rá, template-szerű megoldás, egy adott, DOM-ban már bent lévő elem klónozása, majd egyes attribútumainak módosítgatása, vagy ha bedrótozás, akkor úgy, hogy az egyes elemek legyenek különszedve, jQuery-szintaktikával létrehozva (pl.
    $( "<div/>", {
    "class": "test asdasd bla"
    });

    ), aztán egyberakva.

    Amúgy formelemek klónozására ez elég jó:
    http://www.mdelrosso.com/sheepit/index.php?lng=en_GB&
    Persze jelen esetben nálad nem valószínű, hogy szükséges (14 KB amúgy), csak eszembe jutott. :D

Új hozzászólás Aktív témák