使用jQuery解析HTML

使用jQuery解析HTML,jquery,html-parsing,Jquery,Html Parsing,我是学习Jquery的新手。我想解析HTML字符串: <tr> <td class="first"><b><a href="/q?s=TOM">TOM</a></b></td> <td class="second name">Tom is a good boy</td> <td class="last_trade"><b><span i

我是学习Jquery的新手。我想解析HTML字符串:

<tr>
    <td class="first"><b><a href="/q?s=TOM">TOM</a></b></td>
    <td class="second name">Tom is a good boy</td>
    <td class="last_trade"><b><span id="yfs_l10_TOM">5.45</span></b> <nobr><span id="yfs_t10_TOM">Sep 9</span></nobr></td>
    <td><span id="yfs_c10_TOM"><width="10" height="14" border="0" src="abcdefgh" alt="Down"> <b style="color:#cc0000;">14.49</b></span> <span id="yfs_p20_TOM"><b style="color:#cc0000;"> (72.67%)</b></span></td>
    <td><span id="yfs_v00_TOM">4,100</span></td>
    <td class="last"><a href="/q/bc?s=TOM">Chart</a>, <a href="/q?s=TOM">More</a></td>
</tr>

汤姆是个好孩子
9月9日5时45分
14.49  (72.67%)
4,100
, 
上面的字符串在HTML中使用不同的值重复10次
我想得到值:TOM,5.45,14.49,72.67%,4100,用于HTML中所有10个类似字符串的表示。

使用javascript正则表达式(也称为Regexp):


可以使用循环遍历表行,并按类获取值

$("#table1 tr").each(function() 
{
    $this = $(this);
    var firstName = $this.find(".first").text();
    var secondName = $this.find(".second").text(); 
    // ...
});
我创建它是为了帮助您使用所需的jQuery选择器。jQuery代码循环每个
tr

var results = [];

$("table tr").each(function(i) {
    results[i] = {
        firstName: $("td.first", this).text(),
        lastTrade: $("td.last_trade span:first", this).text(),
        down: $("td.last_trade", this).next("td").find("span:first").text(),
        downPercentage: $("td.last_trade", this).next("td").find("span:last").text(),
        someOtherNumber: $("td.last", this).prev("td").text() 
    };
});

您必须根据需要更改属性名称并使用
结果。

根据更新的问题

我个人会创建一个对象来存储每行中的数据:

    pupil = function () {
        this.name;
        this.score;
        this.dob;
        //..etc
    }
然后在加载页面后填充数组,例如:

    $(function () {
        var pupils = [];
        $('table').find('tr').each(function (x, d) {
            temp = new pupil();
            temp.name = $(d).find('.first').find('a').html();
            //...etc...
        });
    });

如果
string.split()
不能满足您的需要,您可能需要使用正则表达式和
string.match()
。(这些是普通的JavaScript方法,而不是jQuery。)每个建议使用正则表达式的人都会得到一个链接。Shilpi Gautam,如果你想通过解析HTML来学习jQuery,我建议尝试另一种方法,jQuery并不是真正用来解析HTML的,学习它也不是一个好的练习。好吧,问题变了,因此我的答案不合适。如果您需要解析字符串,而不是DOM,这是一个解决方案。使用ErickPetru的答案更好,它只是教会了我一种更好的方法;-)还请注意他使用文本而不是html。。。好多了;-)非常简洁,比我的更整洁,对我来说是一个很好的教训;-)
    $(function () {
        var pupils = [];
        $('table').find('tr').each(function (x, d) {
            temp = new pupil();
            temp.name = $(d).find('.first').find('a').html();
            //...etc...
        });
    });