从父级中删除特定标签(jQuery)

发布于 2024-08-19 10:50:40 字数 663 浏览 8 评论 0原文

HTML:

<div class="featured">
    <h4><a href="#">Title 1</a></h4>
    <a href="#"><img src="image.png" class="image"/></a>
    <p><a href="#"></a><br />
    Description goes here</p>
</div>

<div class="featured">
    <h4><a href="#">Title 2</a></h4>
    <a href="#"><img src="image.png" class="image"/></a>
    <p><a href="#"></a></p>
    <p>Description goes here</p>
</div>

.. 如何从 .featured 中删除所有

标签?

谢谢

HTML:

<div class="featured">
    <h4><a href="#">Title 1</a></h4>
    <a href="#"><img src="image.png" class="image"/></a>
    <p><a href="#"></a><br />
    Description goes here</p>
</div>

<div class="featured">
    <h4><a href="#">Title 2</a></h4>
    <a href="#"><img src="image.png" class="image"/></a>
    <p><a href="#"></a></p>
    <p>Description goes here</p>
</div>

.. How do I strip out all <p> tags from .featured?

Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

榆西 2024-08-26 10:50:40

这是可行的,但只是因为你的段落元素位于 div 的末尾:

$(".featured p").each(function(){
    var content = $(this).html();
    $(this).parent().append(content);
    $(this).remove();
});

This works, but only because your paragraph elements are at the end of your divs:

$(".featured p").each(function(){
    var content = $(this).html();
    $(this).parent().append(content);
    $(this).remove();
});
献世佛 2024-08-26 10:50:40

查看 Ben Alman 的展开“插件”

$.fn.unwrap = function() {
  this.parent(':not(body)')
    .each(function(){
      $(this).replaceWith( this.childNodes );
    });

  return this;
};

您的用法是:

$(".featured p > *").unwrap();

Check out Ben Alman's unwrap "plugin"

$.fn.unwrap = function() {
  this.parent(':not(body)')
    .each(function(){
      $(this).replaceWith( this.childNodes );
    });

  return this;
};

your usage would be:

$(".featured p > *").unwrap();
明媚殇 2024-08-26 10:50:40
$(".featured p").remove();

这是通过将每个

更改为 来实现的。它就地执行此操作,因此

不必位于末尾(无附加 - 它不会对元素重新排序):

$(".featured p").replaceWith(function(){
     return $('<span />').html( $(this).html() );
});

它使用 html,因此元素将丢失数据和事件绑定。

$(".featured p").remove();

This works by changing each <p> to <span>. It does that in-place, so the <p>s don't have to be at the end (no append - it will not reorder the elements):

$(".featured p").replaceWith(function(){
     return $('<span />').html( $(this).html() );
});

It is using html, so the element will lose data and event bindings.

没企图 2024-08-26 10:50:40

使用 jQuery 1.4,你可以这样做:

$(".featured p *").unwrap();
$(".featured p").each(function(){
  $(this).replaceWith("<span>"+ $(this).text() + "</span>")
});

此处 测试它

文本节点不会解开,因此你必须单独做它们。我不确定为什么 ReplaceWith 要求它们位于标签内。

With jQuery 1.4 you could do it like this:

$(".featured p *").unwrap();
$(".featured p").each(function(){
  $(this).replaceWith("<span>"+ $(this).text() + "</span>")
});

Test it here

Text nodes don't get unwraped, so you have to do them separately. I'm not sure why replaceWith requires them to be inside tags.

乖不如嘢 2024-08-26 10:50:40

像这样的东西吗?

$(".featured p").each(
  function(){
    $(this).after($(this).html()).remove();
});

编辑2:经过测试,有效。又好又简单。

Something like this?

$(".featured p").each(
  function(){
    $(this).after($(this).html()).remove();
});

Edit 2: Tested, works. nice and simple.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文