【问题标题】:Extract the Text in a Element with JQuery使用 JQuery 提取元素中的文本
【发布时间】:2010-11-04 06:39:51
【问题描述】:

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

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

我只想要没有强标签的文本“我想要这个文本”。我该怎么做?

【问题讨论】:

  • “标准”方式应该是 $("#bla > span:not(strong)").text();但它不适用于我:-/我需要更多搜索:D
  • +1 回答非常有趣的问题 :)

标签: jquery select text extraction


【解决方案1】:

这样做(已测试):

    var clone = $("#bla > span").clone();
    clone.find('strong').remove();
    alert(clone.text());

【讨论】:

  • 是的,但有 2 个步骤 :) 我试图找到一种唯一且干净的方法。
  • +1“有效”。另外,它很干净。并且易于阅读。比单行更清晰?
  • 所以我得到了一个赞成票,然后是一个(可能是战术性的?)反对票。不错。
  • 投反对票的策略是什么?即使有了它,您也是投票最多的答案。
  • @Paolo,我确实说过可能。当我的周末(在巴林是周五和周六)花费了 20 分钟左右的有效、经过测试的解决方案立即受到侮辱时,我会很生气。
【解决方案2】:
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>

【讨论】:

  • -1 这将输出“bla bla blaI want this text”,他确实指定输出应该只是“I want this text”!
【解决方案3】:

试试这个...

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

//]]>
</script>

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

【讨论】:

  • 如何将此文本附加到 attr?像
【解决方案4】:

karim79 方法的变化:

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

或者如果您只想要根文本而不知道其中还有什么其他标签:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-12-15
    • 2023-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-18
    • 1970-01-01
    相关资源
    最近更新 更多