0

次の「td」要素があり、「span」部分なしで文字列部分(セル1)のみを読み取りたいのですが、jQueryでそれを行うにはどうすればよいですか?

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

ありがとう。

4

3 に答える 3

2

これは、醜い正規表現の不快感なしにそれを行う一般的なソリューションです:-)

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はテキストノード処理をサポートしていないため、2つのかなり悪いオプションが残されています。非効率的な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 に答える