0

我有以下'td'元素,并且只想在没有'span'部分的情况下读出字符串部分(单元格1),我该如何在jQuery中做到这一点?

<td class="myTable">cell 1<span class='end'>&emsp;</span></td>

谢谢。

4

3 回答 3

2

这是一个通用的解决方案,可以在没有丑陋的 RegExp 的情况下做到这一点:-)

var text = $('.myTable').clone()
              .children()
                  .detach()
              .end()
              .text();

编辑1:
或者,如果您确定<span>总是只包含某种空格字符 - 您可以使用.text()后跟 a .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 笨拙。(就像我用它做了一个插件一样好。)

...

再说一次,您总是可以使用某人已经建议的正则表达式。:-)

于 2011-03-17T23:07:10.780 回答
1
$(".myTable").html().replace(/<span.*<\/span>/gi, "")

这里的例子:http: //fiddle.jshell.net/TSYQJ/

于 2011-03-17T22:59:32.423 回答
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'>&emsp;</span></td>
</tr>
</table>
</body>
</html>
于 2011-03-17T22:51:20.397 回答