У меня есть эта функция, чтобы обернуть определенное число 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
!
Я думаю, что проблема кроется в первой строке:
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);