2011-06-01 51 views
0

我正面臨圍繞jQuery和HTML元素的麻煩。 讓我們的「藝術家」:如何獲得具體的<TD>值?

<table id="tableBenef" width="375px"> 
    <tr style="border-bottom: solid 1px silver;"> 
     <td style="width: 10%"> Action </td> 
     <td style="width: 45%"> Nome </td> 
     <td style="width: 20%"> Data Nasc </td> 
     <td style="width: 25%"> Grau Parent </td> 
    </tr> 
</table> 

這上面的表頭和裏面的它,我添加dinamically新行。每行包含一個Checkbox和三個TD,同時我有三個文本輸入,我將其中的每一個發送給對象TD,該複選框用於刪除目的。

問題是,如何獲取這些新的價值與jQuery插入diná地??! 我開始用下面這段代碼:

function getRowValues() { 
      var table = $("#tableBenef"); 
      $(table).each(function() { 
       alert($(this).text()); 
      }) 
     }; 

但我面臨着麻煩,可能有人幫我在這?

在消極的情況下,謝謝! 抱歉有任何錯誤。

回答

1

便宜的解決方案:不要從HTML返回它們。相反,在將每行插入HTML之前,請將該行的值存儲在數組中。然後,只需讀取數組,而不必一直回到DOM。

按照要求,這裏是一些非常基本的代碼,你將如何去做這件事。 (顯然,這只是代碼來說明的總體思路,因爲我不知道你的實際設置。)

var insertedRowData = []; 

function insertRow(rowValues) { 
    // I'm assuming that rowValues is in the form {key1: "value1", key2: "value2"}. 
    // That sort of generic object is probably a good format for storage, 
    // but it doesn't matter what format you use, so long as it is a single object 
    // that can be stored now and accessed later. 

    insertedRowData[insertedRowData.length] = rowValues; 

    /* 
    ... 
    Insert the row into the table, like you're already doing. 
    ... 
    */ 
} 

function handleRowValues() { 
    // Hey, look! All of the data is still stored in insertedRowData. 
    // I can now handle it in whatever way I want. I think I'll log them 
    // to Chrome or Firebug's console, but you can do whatever you want here. 

    console.log(insertedRowData); 
} 
+0

嗨,感謝問。 以後如何獲取這些值?你能用這個做一些代碼嗎?! – felipekm 2011-06-01 01:17:10

+0

@FelipeKM:爲了說明的緣故,我添加了一些非常基本的代碼。本質上,以任何形式創建表單數據的對象(我會使用鍵值對),然後將這些對象存儲在數組中以備後用。 – Matchu 2011-06-01 01:24:08

+0

感謝匹配,感謝您的解決方法! – felipekm 2011-06-01 01:36:04

1

你在桌子上應用.each(),而不是細胞。你需要添加獲取特定後代的方法(在這種情況下,表格單元格)。那樣做(jsfiddle):

function getRowValues() { 
    var table = $("#tableBenef"); 
    $(table).find('td').each(function() { 
     alert($(this).text()); 
    }) 
}; 

注意額外.find('td')做什麼我描述。

它對您有幫助嗎?

+0

是的,但我必須「跳」第一個,因爲它是菜單,對不對?我需要獲得另一排,我該怎麼做? – felipekm 2011-06-01 01:24:30

+0

@FelipeKM菜單是什麼?如果您正在使用表格進行導航,那麼您做錯了。如果你想進入下一行,你可以通過兩種方式來實現 - 首先,我現在的答案通過_all cells_(這意味着無所謂,它們在哪一行)。您可以遍歷每行('tr'),然後遍歷該行中的每個單元格('td')。此外,如果您有列和行標題,請將它們包含在''中,而不是'​​'。只需結合這些解決方案,張貼您自己的,我們將幫助您。 – Tadeck 2011-06-01 01:35:17

+0

這很好,謝謝你的時間@Tadeck – felipekm 2011-06-01 02:03:32