Проверка отображаемого значения элемента HTML и сохранение в cookie в jQuery - PullRequest
1 голос
/ 24 декабря 2009

В настоящее время я пытаюсь использовать jQuery для переключения вида shoutbox и запоминания состояния (скрытого / видимого) от страницы к странице. Проблема, с которой я сталкиваюсь, заключается в том, чтобы установить cookie для запоминания состояния.

Код, который у меня есть, приведен ниже, но, похоже, он неправильно выполняет оператор if. Есть идеи почему?

function show_shoutbox() {
    $('#SB').toggle("fast"); 

    if ($('#SB').css('display') == "none") { 
        document.cookie = "displaysb=false;";
    } else { 
        document.cookie = "displaysb=true; ";
    }
}

Я довольно новичок в JavaScript и jQuery - поэтому заранее прошу прощения, если ответ очевиден. Я надеюсь учиться.

Ответы [ 4 ]

1 голос
/ 24 декабря 2009

Попробуйте

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

Нормализовано, чтобы работать немного лучше, чем проверка display.

0 голосов
/ 23 января 2013

используйте $('#SB')[0] вместо $('#SB'). эта часть кода возвращает массив всех элементов, которые удовлетворяют требованиям. и если у вас есть только один элемент с этим идентификатором, первый элемент с индексом 0 - это элемент, который вы ищете.

0 голосов
/ 24 декабря 2009

Кэшируйте ваш элемент для эффективности

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
  }
}
0 голосов
/ 24 декабря 2009

document.cookie не работает таким образом. Проверить:
http://www.quirksmode.org/js/cookies.html

У него даже есть код в конце:

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);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...