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要素が含まれています。しかし、残りのすべての div は、複数の div がある場合でも、1 つの行に配置されaます!

4

1 に答える 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>");
} 

i = 0 のとき、

配列を 1 から "05" (concat i + "a") の間でスライスするように要求していますが、これらが存在するため問題ありません。だから問題ありません。

i = 5 のとき、

配列を 5 から "15" (concat i + "a") の間でスライスするように要求しているため、これによりすべての配列が取り除かれ、1 つにラップされ.rowます。それがあなたにとって問題がある理由です。

"col-layout"次のように、取得した Cookie を type の変数に解析してみてくださいNumber

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

詳細については、parseIntこちらをご覧ください。

于 2013-07-06T22:55:12.553 に答える