2015-09-27 49 views
1

這可能是一個微不足道的問題,但我有點困惑如何提取列數據&構造一個對象。迭代表列和構建JSON - jQuery

該表是動態的,基於提供的數據生成。

的格式是這樣

<tr> 
    <td> Label </td> 
    <td> 
     <input type = "radio" value="yes"/> YES 
     <input type = "radio" value="no"/> NO 
     <textarea> 
    </td> 
    <td> 
     <input type = "radio" value="yes"/> YES 
     <input type = "radio" value="no"/> NO 
     <textarea> 
    </td> 

    // This structure can repeat 
    ... 
    ... 
</tr> 

// Rows will repeat themselves 

我已經記了這個迄今爲止

$(function() { 
$('#submit').click(function() { 
    var i = 0; 
    var t = document.getElementById('table'); 
    $("#table tr").each(function() { 
     var columns = $(this).find('td'); 

     /* how to extract column data here?, so that I construct 
      a column object and keep looping for the other columns 


    }); 
}); 

我的JSON需要是這樣的: [{標籤:數據,isPresent:數據,值:data},{..},{..}]

我無法一次獲取兩列()的數據,然後循環遍歷接下來的兩列。

回答

1

從你的問題來看,我假設你對jQuery很新,所以我會給你一個簡單的解決方案,可以用很多方式。

我建議你給你的HTML添加類。通過這種方式,我們可以找出獨立的,其中HTML元素位於TR-標籤或什麼類型的標籤的數據被放置到錶行的所有屬性,:

<tr> 
    <td class="item-label"> Label </td> 
    <td> 
     <input class="item-option-yes" type="radio" value="yes"/> YES 
     <input class="item-option-no" type="radio" value="no"/> NO 
    </td> 
    ... other cells with data ... 
</tr> 
... other rows ... 

在你的各個----功能,你可以結合$(本)和發現() - 函數構建JSON對象

$(function() { 
$('#submit').click(function() { 
    var itemArray = []; 

    $("#table tr").each(function (index) { 
     var itemData = { 
      "label": $(this).find(".item-label").text(), 
      "isPresent": $(this).find(".item-option-yes")[0].checked, 
      "value": $(this).find(".some-other-class").text() 
     }; 
     itemArray.push(itemData); 
    }); 
}); 

有關查找更多信息,$(本)和各的功能,請檢查的jQuery網站

+0

我能夠做到這一點,但這似乎很優雅的解決方案。我有一個問題。每個循環迭代遍歷行的每個​​,所以當我們執行'find(「。item-label」)'時,​​中沒有該類的元素,那麼它如何找到該元素的值? – AgentX

+0

我忘了提及列可以連續重複......需要在解決方案中修改哪些內容? – AgentX

+0

我不確定我是否完全理解您在評論中所說的內容。你能舉一個更好的例子,說明你的HTML代碼如何用不同類型的行和列來看待? – jedemu115