JQuery只获取元素的文本而不是childs的文本

时间:2016-01-23 14:00:22

标签: javascript jquery html

我有一个大表,我需要将一些文本转换为另一个Unicode实体,但有些单元格包含另一个html元素,例如:

<td>some text <span>another text</span></td>

我想获得some text只是因为我可以通过以下方式获得第一个孩子span

children().eq(0)

我试过

$(this).text() //but gets all text inside the cell

3 个答案:

答案 0 :(得分:2)

您可以像some text一样获得。

this.childNodes[0].nodeValue

示例

&#13;
&#13;
$('td').click(function () {
    alert(this.childNodes[0].nodeValue)
}) 
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table>
    <tr>
        <td>some text <span>another text</span></td>
    </tr>
</table>
&#13;
&#13;
&#13;

答案 1 :(得分:2)

在jQuery中,您需要过滤掉其内容以获取textnode文本:

$(this).contents().filter(function(){
    return this.nodeType === 3;
}).text(); // >> "some text "

这就是jQuery变得有趣的地方:

$(this).contents().not(':not(:not(*))').text();  // >> "some text "

虽然:

$(this).contents().not('*').text(); // >> "" (empty string!!!)

答案 2 :(得分:1)

使用Jquery你可以克隆元素并移除他的孩子,然后获取文本:

$('td').clone().children().remove().end().text();

希望这有帮助。

&#13;
&#13;
alert( $('p').clone().children().remove().end().text() );
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<p>some text <span>another text</span></p>
&#13;
&#13;
&#13;