需要提取特定的文本节点以使用JQuery隐藏或删除它
我在WordPress上有一个博客,我可以控制它来编辑和格式化RSS提要内容。我有另一个网站,我想在上面显示我的博客文章的摘录,然后直接链接到博客获取全文。我得到的提要很好,只是我有一些不需要的未标记文本显示,因为它没有HTML标记,我不能使用CSS隐藏它。(我很感激我还需要调试提要,可能还有博客内容,因为我使用的提要代码在我设置的任何其他博客上都不会出现此错误,但这是另一个问题) 这是从提要生成的HTML格式:需要提取特定的文本节点以使用JQuery隐藏或删除它,jquery,text,extract,Jquery,Text,Extract,我在WordPress上有一个博客,我可以控制它来编辑和格式化RSS提要内容。我有另一个网站,我想在上面显示我的博客文章的摘录,然后直接链接到博客获取全文。我得到的提要很好,只是我有一些不需要的未标记文本显示,因为它没有HTML标记,我不能使用CSS隐藏它。(我很感激我还需要调试提要,可能还有博客内容,因为我使用的提要代码在我设置的任何其他博客上都不会出现此错误,但这是另一个问题) 这是从提要生成的HTML格式: <li class="rss-item">
<li class="rss-item">
<a class="rss-item" href="http://myblog.com/post-title">Post Title</a>
<br>
http://myblog.com/post-title/Post Title <!-- this line I want to remove -->
<div class="thumbnail">
<a href="#">
<img src="thumbnail.jpg">
</a>
</div>
<div class="excerpt">Excerpt text</div>
<a href="http://myblog.com/post-title">Continue reading...</a>
</li>
http://myblog.com/post-title/Post 标题
节选文本
我希望为未标记的文本(在页面上显示URL和帖子标题)提取文本节点,然后使用JQuery删除它,或者添加一些span标记并使用CSS隐藏它。我的JQuery知识非常有限,我曾尝试编辑我在网上找到的各种代码,但都没有成功。有人能帮忙吗
var tn = $('a.rss-item[href="http://myblog.com/post-title"] + br')[0].nextSibling;
tn.parentNode.removeChild( tn );
示例:
这将查找br
元素,其上一个同级元素是rss项类和hrefhttp://myblog.com/post-title
然后它提取DOM元素,获取应该是文本节点的nextSibling
,并将其存储在变量中
然后从文本节点获取parentNode
,并使用removeChild
删除文本节点
如果这是具有不同URL的重复模式,您可以尝试使用此选择器:
$('a.rss-item[href] + br');
…并使用循环:
$('a.rss-item[href] + br').each(function() {
var tn = this.nextSibling;
tn.parentNode.removeChild( tn );
});
如所述,最好在每个位置执行循环,移除文本节点,直到到达非文本节点,以防存在相邻的文本节点
$('a.rss-item[href] + br').each(function() {
var tn = this;
while( tn = tn.nextSibling ) {
if( tn.nodeType === 3 ) {
tn.parentNode.removeChild( tn );
}
}
});
谢谢你,帕特里克。我编辑了您的答案以删除[href…]文本,因为此链接因帖子而异。不需要的文本在第一次帖子显示(hooray)时被删除,但其他的没有删除-这是一个显示最近10篇帖子的页面。这里需要使用循环吗?+1很好的答案-我建议的另一个补充是循环并删除nextSibling
节点,直到我们继续看到文本节点。@patrick dw。。。刚刚看到你关于循环的笔记。。。真是一种享受!非常感谢@不客气。注意,我刚刚根据@Anurag的建议进行了另一次更新,以涵盖相邻文本节点的可能性。不管怎样,很高兴它成功了o) 实际上,@partrick,刚刚尝试了你的更新,但它没有修复:(我很高兴回到第一个循环代码,因为我需要删除的文本非常一致。