2014-09-04 79 views
0

我有一個只有幾行的表格。每行都有標題,數據和隱藏字段。數據列可以具有文本或textarea。訪問不同類型的元素

<table id="knowledgeTreeTable" class="custom"> 
<tbody> 
    .................... 
    <tr> 
    <th class="">What is the name of the party?</th> 
    <td class=""> 
     <textarea id="ktField_7" class="ktEdit" type="text"></textarea> 
    </td> 
    <input id="ktField_7H" type="hidden" value="Unique contested"> 
    </tr> 
    <tr> 
    <th class="">What is the name of the opposing party?</th> 
    <td class=""> 
     <input id="ktField_8" class="ktEdit" type="text" style="width: 97%;"> 
    </td> 
    <input id="ktField_8H" type="hidden" value="Query"> 
    </tr> 
    ...................... 
</tbody> 
</table> 

我能讀頭和隱藏字段,但不知道如何讀的數據列,因爲它可以有兩種不同類型的元素的內容。

$("#knowledgeTreeTable tr").each(function() { 
     alert($('th', this).text());//OK 
     //alert($('td > [input, textarea]', this).val()); // This is not OK. 
     alert($('input', this).val());//OK 
    }); 
+0

'警報($(「輸入,文本區域」,這一點).VAL() );' – Moob 2014-09-04 20:48:18

+0

您的HTML無效:只有''和'​​'元素是''元素的有效子元素;即使你看不到隱藏的'',它仍然是他們的。仍然搞亂你的HTML ... – 2014-09-04 20:51:07

回答

1

就像你在一個CSS選擇器,尋找

alert($('td > input, td > textarea', this).val()); 

雖然由於您使用的兩種同一類,我會傾向於使用:

alert($('td > .ktEdit', this).val()); 
2

你不能像

td > [input, textarea] 

相反組選擇,使用

td > input, td > textarea 
0

每當你想在這樣的循環來訪問的子元素,你需要建立什麼樣的共同每個元素之間的因素是。在這種情況下,它們是具有不同名稱的不同標籤,但它們都具有ktEdit類,並且都具有type="text"(我不相信它實際上適用於textareas)。

在這種情況下,公共變量是類名,所以你可以使用它作爲你的選擇器。只要你正確地定位你的父母循環,如果使用在整個頁面上的其他元素類都不會有問題:

$("#knowledgeTreeTable tr").each(function() { 
    alert($('.ktEdit', this).val()); 
});