我有以下'td'元素,想要只读出字符串部分(单元格1)而没有'span'部分,我怎么能在jQuery中做到这一点?
<td class="myTable">cell 1<span class='end'> </span></td>
感谢。
答案 0 :(得分:2)
这是一个通用的解决方案,可以做到没有丑陋的RegExp nastiness: - )
var text = $('.myTable').clone()
.children()
.detach()
.end()
.text();
编辑1:
或者,如果您确定<span>
始终只包含某种空格字符 - 您可以使用.text()
后跟.trim()
,如下所示:
$.trim( $('.myTable').text() );
编辑2:
只是为了发挥更多,这是另一个不太涉及jQuery的通用解决方案,因此效率更高。我展示了很棒的.readStringOnly()
插件:
$.fn.readStringOnly = function () {
var nodes = this[0].childNodes,
text = '';
for (var i=0, item; (item = nodes[i]); i++) {
if ( item.nodeType == 3 ) { // text node!
text += item.nodeValue;
}
}
return text;
};
// Usage:
// var text = $('.myTable').readStringOnly();
这基本上是第一个解决方案在纯jQuery方法中的作用,但由于jQuery不支持文本节点处理,因此剩下两个相当糟糕的选项:低效的jQuery代码,或者这种庞大的W3C-DOM fugliness。 (同样好的我用它做了一个插件。)
...
然后,你可以随时使用正如某人所建议的正则表达式。 : - )
答案 1 :(得分:1)
$(".myTable").html().replace(/<span.*<\/span>/gi, "")
答案 2 :(得分:0)
var tableContents = $(".myTable").text();
刚刚测试过,这确实有效。示例页面:
<html>
<head>
<script type="text/javascript" language="javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
alert($(".myTable").text());
});
</script>
</head>
<body>
<table>
<tr>
<td class="myTable">cell 1<span class='end'> </span></td>
</tr>
</table>
</body>
</html>