jQuery:只获取HTML

时间:2010-05-28 12:53:34

标签: javascript jquery

我有这个代码。它返回所有td代码,包括td / td标记。我希望它只返回td的内容/ html

<td>Hey</td> 

应该只给我

Hey

jQuery("#ReportTable", html).each(function (index, tr) {
    arr[index] = jQuery("tbody tr", tr).map(function (index, td) {
        return jQuery(td).html(); 
    });
});

jQuery代码给了我一个如下所示的数组:

arr[0] = {"<td>1</td>", "<td>Hey</td>", "<td>Some data</td>" } 
arr[1] = {"<td>2</td>", "<td>There</td>", "<td>Some other data</td>" }

从html看起来像这样:

<table id="ReportTable"><tr><td>1</td><td>Hey</td><td>Some data</td></tr><tr><td>2</td><td>There</td><td>Some other data</td></tr></table>

所以数组很好,只是我只需要td里面的html / text。

3 个答案:

答案 0 :(得分:2)

您需要在选择器中再向下一级,如下所示:

jQuery(".ReportTable", html).each(function (index, tr) {
  arr[index] = jQuery("tbody tr td", tr).map(function (index, td) { return jQuery(td).html(); });
});

或者,只需使用.text().html(),就像这样:

jQuery(".ReportTable", html).each(function (index, tr) {
  arr[index] = jQuery("tbody tr", tr).map(function (index, td) { return jQuery(td).text(); });
});

(我有".ReportTable"而不是"#ReportTable",因为在问题ID上注明的评论需要是唯一的...所以如果有多个,你应该使用class="ReportTable"

答案 1 :(得分:2)

在我看来,最简单的解决方案是直接在TD上工作,而不是先选择他们的父母。下面的代码是否解决了这个问题? (我可能会误解 - 如果是这样的话就道歉!)

jQuery("#ReportTable td", html).each (function (index) {
  arr[index] = jQuery(this).html();
}

答案 2 :(得分:0)

那么为什么不在选择器中选择TD而不是TR呢? jQuery的html()函数利用了htmlElement.innerHtml,因此一旦选择了正确的元素就不会有任何问题。