如何使用JQuery在嵌套HTML中提取文本?

时间:2014-03-25 18:58:13

标签: javascript php jquery html arrays

我这里有HTML代码:

<div class="actResult" style="border: solid">
    <table>
        <tbody>
            <tr>
                <td>Order Number</td>
                <td>1</td>
            </tr>
            <tr>
                <td>Customer Number</td>
                <td>3</td>
            </tr>
            <tr>
                <td>Complaint Code</td>
                <td>b</td>
            </tr>
            <tr>
                <td>Receivable Receipt Number</td>
                <td>5</td>
            </tr>
            <tr>
                <td>Date Called</td>
                <td>2014-03-19</td>
            </tr>
            <tr>
                <td>Scheduled Day Of Checkup</td>
                <td>2014-03-19</td>
            </tr>
            <tr>
                <td>Scheduled Day Of Service</td>
                <td>2014-03-21</td>
            </tr>
            <tr>
                <td>Checkup Status</td>
                <td>Y</td>
            </tr>
            <tr>
                <td>Service Status</td>
                <td>N</td>
            </tr>
            <tr>
                <td>Technician Number Checkup</td>
                <td>3</td>
            </tr>
            <tr>
                <td>Technician Number Service</td>
                <td>1</td>
            </tr>
        </tbody>
    </table>
</div>

我想获取标签的值并将它们放入一个数组结构的数组中(&#34;第一个td&#34; =&gt;&#34;第二个td&#34;),所以对于在这种情况下,数组将是数组(&#34;订单号&#34; =&gt;&#34; 1&#34;,&#34;客户编号&#34; =&gt;&#34; 3&#34;, &#34;投诉代码&#34; =&gt;&#34; b&#34;,...)等等。

之后,最终的数组将被发送到PHP代码中。

我一直在尝试使用var html = $(this).filter(function( index ){ return $("td", this) }).filter(":odd").text();以及filter()的各种其他组合从HTML中提取一些值,但它似乎并不适合我。

我该如何做我想做的事?

2 个答案:

答案 0 :(得分:4)

jsFiddle Demo

您将要使用.each并迭代表中的行。对于每一行,将第一个单元格(.eq(0))作为键,将第二个单元格(.eq(1))作为值。将它们放在结果对象中。

//object to hold resulting data
var result = {};

//iterate through rows
$('.actResult tr').each(function(){

 //get collection of cells
 var $tds = $(this).find('td');

 //set the key in result to the first cell, and the value to the second cell
 result[$tds.eq(0).html()] = $tds.eq(1).text();
});

答案 1 :(得分:1)

您可以获取表元素的rows属性,并根据单元格的值创建一个对象:

var rows = document.querySelector('.actResult table').rows, 
    data = {}, c, l = rows.length, i = 0;

for (; i < l; i++) {
    c = rows[i].cells;
    data[c[0].innerHTML] = c[1].innerHTML;
}

http://jsfiddle.net/tG8F6/