Извлечение аргумента функции из cookie

0

У меня есть эта функция, чтобы обернуть определенное число div в строку.

function rowCreation(a) {
    a = $.cookie("col-layout");
    if(typeof(a)==="undefined") a = 3;

    if ($("div.gallery-item").parent().is("div.row")) {
        $('div.row').replaceWith(function () {
            return $('div.gallery-item', this);
        });
    }
    var divs = $("section#gallery-wrapper div.gallery-item");
    for (var i = 0; i < divs.length; i += a) {
        divs.slice(i, i + a).wrapAll("<div class='row'></div>");
    }
}

Но что-то кажется неправильным, и я не могу понять, что именно. Первая строка сформирована корректно, она содержит элементы a. Но все остальные divs помещаются в одну строку, даже если их больше чем a!

  • 0
    Можете ли вы сделать скрипку для этого на jsfiddle.net?
  • 0
    Нет, потому что по моему опыту куки не работают на jsfiddle. Я попробую контрольный пример, хотя
Показать ещё 2 комментария
Теги:
cookies
arguments

1 ответ

3
Лучший ответ

Я думаю, что проблема кроется в первой строке:

a = $.cookie("col-layout");

Ваша функция rowCreation обрабатывает a как число, но cookie передает ее как строку. Итак, когда вы это сделаете,

for (var i = 0; i < divs.length; i += a) {
    divs.slice(i, i + a).wrapAll("<div class='row'></div>");
} 

Когда я = 0,

Вы запрашиваете, чтобы массив был отрезан между 1 и "05" (concat я + "a" ), это прекрасно, потому что они существуют. Поэтому никаких проблем.

Когда я = 5,

Вы запрашиваете, чтобы массив был отрезан между 5 и "15" (concat я + "a" ), поэтому он снимает все массивы и обертывает их в один .row. Вот почему это проблематично для вас.

Попробуйте разобрать полученный файл cookie "col-layout" переменной типа Number, например:

a = parseInt($.cookie("col-layout"), 10);

Подробнее о parseInt здесь.

  • 0
    Ах, это имеет большой смысл. Глупая ошибка. Большое спасибо!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню