Next Generation CMS :: Форум поддержки

Заинтересовала наша система? Тогда этот форум для Вас!

rss

Вы не зашли.

Объявление

#1 2010-03-25 23:35:46

Live
Пользователь
Зарегистрирован: 2009-12-04
Сообщений: 181
Рейтинг :   
Профиль

Знатоки jQuery есть?

сабж, вопросец есть, сам не сильно силен в нем, хочу сделать вот что:
на сайте есть блок, который при нажатии на другой блок\ссылку (вне первого блока) скрывает первый блок. с етим вроде проблем нет. но нужно что бы менялась надпись с "скрыть блок" на "показать блок"
и что бы все ето сохранялось в кукисах что бы юзер при повторном заходе на сайт не нажимал скрыть блок если он ему не нужен

как такое сделать? smile

Неактивен

 

#2 2010-03-26 00:22:11

KhadeR
Пользователь
Зарегистрирован: 2009-09-16
Сообщений: 207
Рейтинг :   17 
Профиль

Re: Знатоки jQuery есть?

Попробуй так:

Код:

<script type="text/javascript">
$(function(){    
    $(window).load(function() { 
        if (readCookie('hide')) {
            hideblock();
        } else $('#button2').hide();
        function hideblock() {
            $('#block').hide();
            $('#button1').hide();
            $('#button2').show();        
            createCookie('hide', 'yes', 365);
        };
        function showblock() {
            $('#block').show();
            $('#button2').hide();
            $('#button1').show();        
            eraseCookie('hide');
        };
        $('#button1').click(function() {
            hideblock();
            return false;
        });
        $('#button2').click(function() {
            showblock();
            return false;
        });
    });
});

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);
};</script>
<a href="#" title="Показать" id="button2">Показать</a><a href="#" title="Скрыть" id="button1">Скрыть</a>

По сути, должно получиться...

Отредактированно KhadeR (2010-03-26 00:30:49)


Linkum
В ТОП без фильтров и банов - Оптимизм.

Неактивен

 

#3 2010-03-26 06:48:06

Live
Пользователь
Зарегистрирован: 2009-12-04
Сообщений: 181
Рейтинг :   
Профиль

Re: Знатоки jQuery есть?

спс, работает, но есть пара моментов:
1. может изначально им присвоить класс какой нибудь, который содердит дисплей: нон
что бы у юзеров, у который отключен джава скрипт, не отображались ети ссылки

2. $('#block').hide(); $('#block').show(); я заменяю на $("#introbox").slideToggle("slow"); и получается если в кукисах сохранено что блок должен быть скрыт, при обновлении страницы блок виден и сразу плавно сворачивается - как сделать что бы он просто не был виден в таком случае?

Неактивен

 

#4 2010-03-26 11:05:23

KhadeR
Пользователь
Зарегистрирован: 2009-09-16
Сообщений: 207
Рейтинг :   17 
Профиль

Re: Знатоки jQuery есть?

Значит так:

1. css:

Код:

.hide{display:none;}

2. html:

Код:

<a href="#" id="button" class="hide">Скрыть</a>

3. js:

Код:

<script type="text/javascript">
    $(window).load(function() { 
        $('#button').removeClass('hide');
        if (readCookie('hide')) {
            $('#introbox').hide()
            $('#button').text('Показать');
        };

        $('#button').click(function() {
            $('#introbox').slideToggle('slow');
            if (readCookie('hide')) {
                $('#button').text('Скрыть');
                eraseCookie('hide');
            } else {
                $('#button').text('Показать');
                createCookie('hide', 'yes', 365);        
            }
            return false;
        });
    });
    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);
    };
</script>

Отредактированно KhadeR (2010-03-26 11:08:45)


Linkum
В ТОП без фильтров и банов - Оптимизм.

Неактивен

 

#5 2010-03-26 12:19:14

Live
Пользователь
Зарегистрирован: 2009-12-04
Сообщений: 181
Рейтинг :   
Профиль

Re: Знатоки jQuery есть?

KhadeR, спасибо, имено то, что нужно smile

Неактивен

 

Board footer

Powered by FluxBB

[ Generated in 0.005 seconds, 14 queries executed ]