2009-12-23 4 views
1

J'essaie actuellement d'utiliser jQuery pour basculer l'apparence d'un shoutbox et me souvenir de l'état (masqué/visible) d'une page à l'autre. Le problème que j'ai est d'obtenir un ensemble de cookies pour se souvenir de l'état.Vérification de la valeur d'affichage de l'élément HTML et enregistrement dans un cookie dans jQuery

Le code que j'ai pour le moment est ci-dessous, mais il ne semble pas exécuter l'instruction if correctement. Des idées pourquoi? Je suis assez nouveau pour JavaScript et jQuery - donc je m'excuse à l'avance si la réponse est évidente. J'espère apprendre.

Répondre

1

Essayez

if ($('#SB').is(':visible')) { 
    ... 
} 

Il est normalisé de travailler un peu mieux que la vérification display.

+0

J'ai essayé ça ... ça ne marche toujours pas. – waiwai933

+0

Ce n'est pas vraiment une question de travail ou non. C'est le code à vérifier pour voir si un élément est visible avec jQuery. Voter en bas des réponses parce que votre code est cassé ne semble guère intuitif ou utile. "il ne semble pas exécuter la déclaration if correctement" - je vous ai succinctement décrit comment faire cela. Veuillez reformuler votre question si vous n'aimez pas obtenir les réponses à celle que vous avez demandée. –

+0

En fait, ce n'est pas moi qui l'ai déprécié ... en tout cas, j'ai testé votre code avec des boîtes d'alerte, et il m'a toujours dit qu'il était visible, que ce soit effectivement ou non. – waiwai933

0

document.cookie ne fonctionne pas de cette façon. Départ:
http://www.quirksmode.org/js/cookies.html

Il a même code à la fin de celui-ci:

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[i]; 
     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); 
} 
+0

Désolé, pouvez-vous expliquer ce que je fais mal? Alors que le code est utile, je veux savoir * pourquoi * quelque chose ne va pas. – waiwai933

-3

Cache votre élément pour l'efficacité

var sb=$('#SB');//cache once outside the function 
function show_shoutbox() { 
    sb.toggle("fast"); 
    if (sb.is(':visible')) {//do your business 
    } 
    else { //do something else 
    } 
} 
+1

Cela ne répond pas à la question du tout. – Malfist

0

utilisation $('#SB')[0] au lieu de $('#SB'). cette partie du code retourne un tableau de tous les éléments qui satisfont aux exigences. et si vous n'avez qu'un seul élément avec cet ID, le premier élément avec l'index 0 est l'élément que vous recherchez.

Questions connexes