使用JQuery过滤HTML内容但排除某些元素

时间:2011-10-21 13:35:39

标签: jquery html filter

我有一个帖子列表,我想删除除“内容设置”以外的所有文字/ HTML内容。

原始

<li id="post">
    <p>
        <strong>Reality</strong>
    </p>
    <p>
        Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.
    </p>
</li>
<li id="post">
    <p>
        <strong>Buzz</strong><br>
        <br>
        Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.
    </p>
</li>
<li id="post">
    <p>
        <strong>Innovation</strong><br>
        <br>
        Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.
    </p>
</li> 

期望的结果

<li id="post">
        Reality
</li>
<li id="post">
        Buzz
</li>
<li id="post">
        Innovation
</li>

如何使用JQuery执行此操作?

6 个答案:

答案 0 :(得分:1)

以下代码按预期工作。 id="post"替换为class="post" !!

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

$("li.post").each(function(){
    var filtered = $("<li>").append($("strong", this).text())
    $(this).replaceWith(filtered);
});
  1. 遍历每个<li>项目。
  2. 创建新的<li>元素,并附加所有<strong>元素的文字内容
  3. 用刚刚创建的<li>元素(<li>)替换当前选定的filtered元素。

答案 1 :(得分:0)

我的解决方案是制作一个选择器,选择所有强$(“强”),然后删除所有li,然后删除$(“strong”)中的.each项,将其附加到新的li中。

答案 2 :(得分:0)

这应该可以帮助你:

var htmlText = "";
$('.post').find('strong').each(function() {
    htmlText += "<li class=\"post\">" + $(this).text() + "</li>";
});

alert(htmlText);

答案 3 :(得分:0)

$('.post').each(function(){
    $(this).html($('strong', this).text());
});

将id =“post”更改为class =“post”,因为其他人也会声明。

答案 4 :(得分:0)

假设您要将id='post'更改为class='post'id s应该是唯一的):

$("li.post").each(function() {
   $(this).text($(this).find("strong").text());
});

这将保留与列表项关联的所有属性,并仅替换内容。

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

答案 5 :(得分:0)

我的解决方案是制作一个选择器,选择所有强$(“强”),然后删除所有li,然后删除$(“strong”)中的.each项,将其附加到新的li中。


更新

您可以尝试:http://jsfiddle.net/6awfe/

$("li#post").each( function()
    {
        $(this).html("[strong start tag]" + $("strong", this).html()+"[strong end tag]");
    } )