premikanje, brisanje, shranjevanje blokov

Pozdrav!

Zanima me, če ima kdo skripto, ki omogoča premikanje blokov (divov) na določeno mesto in shranjevanje le teh. Torej, ko en blok primeš in ga daš na neko mesto (npr. nad drugega) se pozicija shrani (preko piškotkov). Če bi se dalo tudi zapiranje bloka, torej da se blok odstrani in shrani v piškotek, da se ob naslednjem obisku strani več ne prikaže.

Za primer dam stran: http://www.rtvslo.si/

Lp, Jure

12 odgovorov

jQuery ima zagotovo kakšen plugin v tem smislu.

Iskal že pa nič našel. :(

Pa predelaj kakšnega obstoječega, teh drag-n-drop pluginov je malo morje, dodelaš le to, da se zadeva shrani v cookie.

Jquery UI ima ql stvar, samo kako potem obdeluješ zaporedje itd ... je pa druga stvar, če ne znaš, je bolje da kje najdeš kak narejen plugin. Glej tudi pod sortable, ker načeloma sortiraš bloke v neko zaporedje ...

Okej, da nebom nove teme odpiro.

Zaj sem se odločo da nebom uporabo tega premikanja, ampak brisanje pa bi vseeno. Torej jquery ima modul, ki poskrbi da določeno stvar izbrišemo na lep način:

$("button").click(function () {
      $("div").fadeOut("slow");
    });

Torej ob kliku na <button>vsebina</button> se skrije vse kar je v div oznaki, vse super in prav le to me muči, kako bi lahko naredil takole:
Imam več različnih divov, ki je treba, da se skrije vsak posebej (ne da se ob kliku skrijejo vsi), torej nekako bi moral to narediti preko getElementById, ampak potem moram spet za vsako pisat novo kodo.

Imam pa še eno vprašanje glede piškotkov v javascriptu. Na neki strani sem pobral tri funkcije za ustvarjanje, branje in izbris piškotka.

function createCookie(name,value,days) {
    if (days) {
        var date = new Date();
        date.setTime(date.getTime()+(days*24*60*60*1000));
        var expires = "; expires="+date.toGMTString();
    }
    else var expires = "";
    document.cookie = name+"="+value+expires+"; path=/";
}

function readCookie(name) {
    var nameEQ = name + "=";
    var ca = document.cookie.split(';');
    for(var i=0;i < ca.length;i++) {
        var c = ca*;
        while (c.charAt(0)==' ') c = c.substring(1,c.length);
        if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
    }
    return null;
}

function eraseCookie(name) {
    createCookie(name,"",-1);
}*

*Delajo kot morajo, ampak jas nisem vešč javascriptu, zato bi proso nekoga, da mi naredi oz. pomaga naredit tole:
- ob kliku na gumb X bi se določen div skril in ustvaril piškotek, ki bi vseboval id tega diva
- ob ponovnem vstopu na stran bi se moral piškot prebrat in videt, če obstaja, če bi obstajal se div z tem idjem nebi smel prikazat

Nevem, če sem si prav zadal tole, ampak pomoje je to edina pot za rešit tako stvar. Primer še vedno ostaja http://www.rtvslo.si/.

Lep pozdrav, Jure*

Do kdaj bi potreboval? Piši mi na ZS, pa se dogovoriva.

cyman:
Do kdaj bi potreboval? Piši mi na ZS, pa se dogovoriva.

Ni vezano na čas. Saj če lahko me samo usmeri na prave poti pa probam sam naret, da se nebote drugi mučli... Hvala v naprej!

Za tisto, da ti ne zbriše vseh divov moraš narediti tako, da narediš eno referenco na gumbu, ki ga klikneš. Recimo gumbu daj atribut rel="5" in ID divu, ki ga brišeš, enak id, se pravi id="5".
Ko se ti sproži jquery click event, dostopaš do vrednosti rel gumba, ki je bil kliknjen z metodo this. Ne vem iz glave kako prideš do vrednosti atibuta, vem da z nekimi [attr=rel] ali nekaj takega. No, to vrednost shraniš v eno variablo in potem brišeš div s tem IDjem.
To je dinamičen način, statičnega si pa že sam ugovovil. Za vsak gumb poseben click event.

Kar se cookijev tiče, bi si moral malo bolj pogledat. Takoj zatem ko brišeš div, moraš še nastavit cookie.
Za nalaganje bi pa moral v en array zbrat podatke, ko se stran naloži in skrit tiste, ki jih nočeš.

Uff... to pa je precejšen zalogaj za nekoga, ki praktično nima "nič" izkušenj z javascriptom. Bom rajši počako, če kdo objavi kak delček kode. :P