2013-07-06 81 views
0

我有這個函數將特定數量的div包裝到一行中。從cookie中獲取函數的參數

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

u能作出這樣的小提琴在jsfiddle.net? – krishgopinath

+0

不,因爲根據我的經驗,cookies不適用於jsfiddle。我會嘗試一個測試用例,儘管 –

+0

嘗試jsbin.com然後:) 當然,他們工作:) – krishgopinath

回答

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 1 + 「A」) ,那很好,因爲這些都存在。所以沒有問題。

在i = 5,

你問陣列5和 「15」(我的concat + 「A」)之間進行切片,因此這個起飛所有陣列和包裹它在一個.row。這就是爲什麼它對你有問題。

嘗試解析該cookie檢索"col-layout"Number類型的變量,就像這樣:

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

More info about parseInt here.

+0

啊,這很有道理。愚蠢的錯誤。非常感謝! –