-6

如何找到包含特定文本的 div 并从 div 中删除此文本。例如

<div>
DeleteText
<span>Something text</span>
<div>Something span inner text </div>
</div>

我需要按文本查找 div (例如 DeleteText)并从 div 中仅删除此文本。我该怎么做。

只应删除 DeleteText。所有其他 html 元素和内容应保持原样。

4

7 回答 7

3

使用:contains选择 div,然后过滤内容并删除节点。

$("div:contains('DeleteText')").contents().filter(function () {
    return (this.nodeType == 3 && $.trim(this.nodeValue) == 'DeleteText');
}).remove();

演示:http: //jsfiddle.net/YkEy5/

于 2012-10-18T15:18:53.487 回答
2

您需要为此使用:contains()选择器。

您可以DeleteText通过以下方式找到:

$("div:contains('DeleteText')").html("");

要仅删除text,您可以使用此功能:

function removeText(element){
    var newElement = $('<' + element[0].nodeName + '/>');
    element.children().each(function(){
        newElement.append(this);
    });
    element.replaceWith(newElement);
}

现在结合两者,你得到这个:

removeText($("div:contains('DeleteText')"));

小提琴:http: //jsfiddle.net/DwTmp/

于 2012-10-18T15:14:10.863 回答
0

:包含()

这个选择器的文档在这里: http ://api.jquery.com/contains-selector/

于 2012-10-18T15:15:28.170 回答
0

$('div:contains("something span inner text")');应该找到你的 div 项目

于 2012-10-18T15:15:31.400 回答
0
$("div:contains('DeleteText')").html('');

匹配的文本可以直接出现在所选元素中、该元素的任何后代中,或者它们的组合中。与属性值选择器一样,:contains() 括号内的文本可以写成裸词或用引号括起来。文本必须具有匹配的大小写才能被选中。

于 2012-10-18T15:15:40.807 回答
0

在下面试试这个

$('div:contains("sometext")').html('')

这会查找带有“sometext”的 div 并放置空文本

于 2012-10-18T15:15:48.537 回答
0

你可以用 jQuery 做到这一点:

$("div[innerHTML=Something inner text]")
于 2012-10-18T15:16:05.283 回答