从cookie中获取函数的参数

时间:2013-07-06 21:51:49

标签: jquery cookies arguments

我有这个函数将特定数量的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个!

1 个答案:

答案 0 :(得分:3)

我认为问题出在第一行:

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

您的函数rowCreationa视为一个数字,但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);

More info about parseInt here.