我有这个函数将特定数量的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
个元素。但所有剩余的div都被放入一行,即使它们超过a
个!
答案 0 :(得分: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>");
}
当i = 0时,
你要求数组在1和“05”(concat i +“a”)之间切片,这很好,因为它们存在。所以没问题。
当i = 5时,
你要求数组在5和“15”(concat i +“a”)之间切片,所以这会取消所有数组并将其包装在一个.row
中。这就是为什么它对你有问题。
尝试将检索到的"col-layout"
Cookie解析为Number
类型的变量,如下所示:
a = parseInt($.cookie("col-layout"), 10);