jQuery:获取​​的html只有

问题描述:

我有这段代码。它返回包含td/td标签的所有td代码。我希望它只是返回TD的内容/ HTMLjQuery:获取​​的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> 

所以数组,例外的是我只需要内部运输署的HTML /文佳。

+3

您正在使用'each()'对ID选择器。请告诉我,您没有多个ID为“ReportTable”的元素。你不能重用ID。 – user113716 2010-05-28 12:58:35

+0

你可以发布你正在处理的标记吗?这可以简化很多,但需要你的标记是肯定的。 – 2010-05-28 13:24:30

+0

我发布了标记 – Poku 2010-05-29 16:27:08

你需要去往下一个多水平在你的选择,像这样:

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"

+0

OP正在使用一些令人困惑的名字作为函数参数。我有一种感觉,当OP执行'.each(function(index,tr){...',例如,他认为'tr'选择'

'而不是引用当前的迭代值。同样, td'在'.map(函数(索引,td)''也许值得一提? – user113716 2010-05-28 13:21:42
+0

@patrick - 添加了一个标记请求的问题,真的可以进一步减少...很难说他在做什么之后但是,这个问题真的没有给出很多的背景知识 – 2010-05-28 13:26:09

+0

好主意虽然基于OP给一个引用'

'的参数赋予名字'td'的事实,但是我不会感到惊讶,如果他认为'td'导致'.map()'遍历'​​'元素 – user113716 2010-05-28 13:31:59

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

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

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

作为一个方面说明,我实际上更喜欢使用'$(html).find(“#R eportTable td“)' - 我认为阅读起来更容易一些。在幕后,jQuery对待两者都是一样的,所以为了便于阅读,我使用'find'方法:) – iblamefish 2010-05-28 19:22:27

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

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

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

作为一个方面说明,我实际上更喜欢使用'$(html).find(“#R eportTable td“)' - 我认为阅读起来更容易一些。在幕后,jQuery对待两者都是一样的,所以为了便于阅读,我使用'find'方法:) – iblamefish 2010-05-28 19:22:27