2015-03-18 52 views
0

我是新的jQuery世界,仍在學習。我想了解如何傳遞數組參數從「each()」循環中讀取數據。讓我試着解釋(我的母語是葡萄牙語,不好意思)。jQuery數組參數和每個()

我原來的代碼如下:

$('#relatorio').DataTable({ 
    (...) 
    columns: [ 
     {visible:$('#c1').is(':checked')}, 
     {visible:$('#c2').is(':checked')}, 
     {visible:$('#c3').is(':checked')} 
    ] 
}); 

因爲我會在幾個地方(報告)用這個,我做了一個js文件。但是,在每個報告中,我會有不同的複選框。所以我想掃描每個複選框並動態地裝入對象數組。我已經添加在每個複選框一類「COLSEL」,所以我可以做:

var vCada=[]; 
$('.colsel').each(function(){ vCada.push({visible:$(this).is(':checked')}); }); 

好了,但現在我不知道如何直接在那裏更換此。

我有成功創建返回對象數組的函數:

function StatusCols() { 
    var vCada=[]; 
    $('.colsel').each(function(){ vCada.push({visible:$(this).is(':checked')}); }); 
    return vCada; 
} 

然後:

columns: StatusCols() 

但我並不滿足於這一點,我的新手知識是沒有幫助我: (

我已經試過:

columns: function() { 
    var vCada=[]; 
    $('.colsel').each(function(){ vCada.push({visible:$(this).is(':checked')}); }); 
    return vCada; 
} 

那麼,我的錯誤在哪裏?任何人都可以幫助我(並教我)嗎?

謝謝!

+0

* 「但我不滿意這個」 *爲什麼呢?最後的錯誤是你正在給'columns'分配一個函數,而不是調用*函數並賦值它的返回值。儘管如此,我沒有看到最後的解決方案會如何改進原始代碼。 – 2015-03-18 23:16:43

+1

你可以試試這個:http://pastebin.com/raw.php?i=10UX0xpP,但'columns:StatusCols()'很好。 – blex 2015-03-18 23:19:27

+0

嗨菲利克斯,我以前的代碼工作,但需要一個額外的功能。我試圖刪除額外的功能,所以我的想法是創建一個「本地」函數,可以返回一個數組。 – Arvy 2015-03-18 23:25:07

回答

1

謝謝@blex。解決了。解決方案:

columns: function() { 
    var vCada=[]; 
    $('.colsel').each(function(){ vCada.push({visible:$(this).is':checked')}); }); 
    return vCada; 
}() 

方式:函數(){...}()

+1

是的,修正@blex – Arvy 2015-03-18 23:41:10