10

我想用 JQuery 提取元素内的文本

<div id="bla">
    <span><strong>bla bla bla</strong>I want this text</span>
</div>

我只想要没有强标签的文本“我想要这个文本”。我怎样才能做到这一点?

4

4 回答 4

7

试试这个...

<script type="text/javascript">
//<![CDATA[
$(document).ready(function(){
    $("#bla span").contents().each(function(i) {
        if(this.nodeName == "#text") alert(this.textContent);
    });
});

//]]>
</script>

这不需要从上下文中删除任何其他节点,只会在每次迭代时为您提供文本节点。

于 2009-06-19T11:24:32.043 回答
6

karim79 方法的变化:

$("span").clone().find("strong").remove().end().text();

或者如果您只想要根文本而不知道其中包含哪些其他标签:

$("span").clone().children().remove().end().text();

仍然有点长,但我认为这与您希望的一样短。

于 2009-06-19T11:32:23.853 回答
5

这样做(经过测试):

    var clone = $("#bla > span").clone();
    clone.find('strong').remove();
    alert(clone.text());
于 2009-06-19T10:36:55.540 回答
0
var textFromSpanWithoutStrongTag = $('div#bla > span').text();

更新:

var textFromSpanWithoutTextFromStrongTag =
    $('div#bla > span').text().replace($('div#bla > span > strong').text(), '');

更新:

var text = '';
$("div#bla > span").contents().each(function () {
    if(this.nodeType == 3) text = text + this.nodeValue; });

在 FF3、IE8、O10b 上测试:

<div id="bla">
    <span>
        <strong>bla bla bla</strong>
        I want this
        <strong>bla bla</strong>
        text
        <span>bla bla bla</span>
    </span>
</div>
于 2009-06-19T10:49:16.403 回答