Инкрементная переменная для - PullRequest
0 голосов
/ 25 апреля 2010

У меня 30 одинаковых классов на одной странице. Когда я нажимаю на заголовок (.pull), содержимое скользит вверх (.toggle_container). Когда содержимое скрыто, и я снова нажимаю на заголовок, содержимое скользит вниз. Также я хочу сохранить состояние div в cookie. Я изменил свой исходный код, чтобы сохранить состояние div внутри cookie, но он не работает для всех div (pull1, toggle_container1, pull2, toggle_container2 [...]), он работает только для первого (pull0, toggle_container0). Что я делаю не так?

var increment = 0;
           if ($.cookie('showTop') == 'collapsed') {
               $(".toggle_container" + increment).hide();
            }else {
               $(".toggle_container" + increment).show();
         };
          $("a.pull" + increment).click(function () {
            if ($(".toggle_container" + increment).is(":hidden")) {
               $(".toggle_container" + increment).slideDown("slow");
               $.cookie('showTop', 'expanded');
               increment++;
            } else {
               $(".toggle_container" + increment).slideUp("slow");
               $.cookie('showTop', 'collapsed');
               increment++;
            }
            return false;

          });    

Ответы [ 2 ]

1 голос
/ 05 мая 2010

Это код:

$('div.toggle_container').each(function() { // Initialise
        var index = this.id.replace(/^\D+/, '');
              $(this).toggle($.cookie('showTop' + index) == 'collapsed');
            });

    $('a.pull').click(function() { //Activate                  
        var index = this.id.replace(/^\D+/, '');
        if ($.cookie('showTop' + index) == 'collapsed') {
        var container = $('#toggle_container' + index).slideDown('slow');
        $.cookie('showTop' + index, container.is(':hidden') ? 'collapsed' : 'expanded');
        }else {
        var container = $('#toggle_container' + index).slideUp('slow');
        $.cookie('showTop' + index, container.is(':visible') ? 'expanded' : 'collapsed');
            }
});
1 голос
/ 25 апреля 2010

Я не пробовал ни одного вашего кода, но не будет ли $ ("a.pull" + increment) = $ ("a.pull0")? и я не вижу ни одного цикла for, поэтому будет выполняться только селектор приращения 0

может быть выбран селектор jquery http://api.jquery.com/attribute-starts-with-selector/ Если вы можете выбрать div, у которых есть класс, начинающийся с .pull (или чего-то еще) вместо привязки к 30 различным div, я думаю, ваш код будет более производительным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...