Avatar billede Danieldue Nybegynder
24. juni 2010 - 22:46 Der er 6 kommentarer

jQuery toggle, Sæt variabel til "true or false", og .

Hej Eksperter

jeg har følgende kode:

$(document).ready(function(){

    $(".openClose").click(function(){
        $("#menu").slideToggle("slow");
    });

Som udgangspunkt er div#menu synlig. Men trykker man på a.openClose "toggles" den til hidden.

Se her: http://www.onlinebrand.dk/template/aidenVersion2/

Trykker man så på et menupunkt bliver div#menu synlig igen. Dette ønsker jeg ikke, da brugeren har taget et bevidst valg om at "toggle" den væk.

For at få browseren til at huske brugerens valg vil jeg sætte en variabel. Og denne variabel skal så bestemme om div#menu er synlig.

Jeg kan få status på toggle ved at definere denne variabel:
var status = $('#menu').is(':visible');

så får jeg true/false tilbage.

Så mit spørgsmål er vel egentlig:

Hvordan beder jeg javascript om at læse variables værdi, og ud fra det, bestemme om den skal være true or false..

Nu har jeg beskrevet hvad jeg har brugt de sidste 6 timer på at finde ud af. Nu håber jeg der er en der vil give mig et hestesko, så jeg kan komme op på hesten..

Vh Daniel
Avatar billede heinzdmx Nybegynder
24. juni 2010 - 23:01 #1
kunne man ikke sætte en cookie, og derved læse om den skal være vist eller ej?

Eller sende en variabel med i url'en, med f.eks. ?show=true

eller noget i den stil?
Avatar billede mike1963 Nybegynder
25. juni 2010 - 13:35 #2
var status = $('#menu').get();

men den giver HELE molevitten:

<div id="topMenuWrapper"> <div id="topMenu"> <div class="moduleta... (length: 1535)

Så du skal kvalificere den yderligere ;o)

men jeg kan se at der ikke er brugt id's på børneelementer

så hvis a tag'et fik en id, så ville get() være det du skal bruge

Mike
Avatar billede Danieldue Nybegynder
25. juni 2010 - 16:10 #3
Desværre i taler hen over hovedet på mig. Jeg vil helst undgå en cookie, da jeg har læst mig frem til at det er en del mere kompliceret.

Det jeg skal er vel at lave en if else sætning, omkring mit script.

Jeg prøvede at tilføje et id på mit a element.

<div class="slideBtn"><a href="#" id="link" class="openClose">openClose</a></div>

laver jeg så en document.write(status) får jeg værdien: http://www.onlinebrand.dk/template/aidenVersion2/#

Men den kan jeg ikke se hvad jeg skal bruge til?

Beklager.. Håber en af jer, måske kan være lidt pædagogisk/malende i jeres forklaring :) heh..

Jeg har selv skrevet dette:

if(status == false){
    $("#menu").addClass("hidden")

}else{   
    $("#menu").removeClass("hidden")   
}

Men, det virker ikke..
Avatar billede heinzdmx Nybegynder
25. juni 2010 - 16:29 #4
det er selvfølgelig dit valg, men cookies er ikke så svært igen.

Du skal bare tilføje et plugin:
http://plugins.jquery.com/project/Cookie

Så kan du sætte en cookie med: (hvor "example" er navnet, og "foo" er dataene

$.cookie("example", "foo");

Sådan får du den til at gælde i 7 dage:
$.cookie("example", "foo", { expires: 7 });

få værdien og lav en alert:
alert( $.cookie("example") );

Slette cookie:
$.cookie("example", null);

Andre metoder må du bede andre om at hjælpe med
Avatar billede Danieldue Nybegynder
25. juni 2010 - 22:45 #5
Hej heinzdmx

Tak for dit svar..

Jeg har flere gange rodet med plugins, men aldrig fået dem til at virke :( Men det da et forsøg værd..

Jeg vil dog stadig gerne høre fra andre.. :)
Avatar billede mike1963 Nybegynder
28. juni 2010 - 16:15 #6
Hmmm jeg fik altså skidtet til at virke fordi:
$('#link').addClass("hidden")
Du skal udskifte ordet #menu med #link ?
Jeg kan få din side til at blive hidden vha Chrome's javascript consol !
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester