防止自动重复附加html

bis0qfac  于 2022-11-27  发布在  其他
关注(0)|答案(1)|浏览(140)

我试图使用类在多个div中追加HTML。但是我的代码在一个部分(HTML1)中复制HTML,而另一个部分是正确的。

HTML 1:

<div class="about-author">
  <div class="author-text">
    This is a author bio. <a href="https://example.com">example</a><a href="https://example.com">example</a>
  </div>
</div>

HTML 2格式:

<div class="author-info">
  <div class="author-bio">
    This is a author bio. <a href="https://example.com">example</a><a href="https://example.com">example</a>
  </div>
</div>

JavaScript程式码:

$(".about-author .author-text,.author-info .author-bio").each(function () {
    var $this = $(this),
        link = $this.find("a");
    link.each(function () {
        var $this = $(this),
            cls = $this.text().trim(),
            url = $this.attr("href");
        $this.replaceWith('<li class="' + cls + '"><a href="' + url + '" title="' + cls + '" rel="noopener noreferrer" target="_blank"/></li>')
    });
    if (link.length) {
        $this.parent().append('<ul class="author-links social social-color"></ul>');
    }
    $this.find("li").appendTo(".author-links")
});

我希望HTML 1和HTML 2中的输出相同

sczxawaw

sczxawaw1#

您可以直接循环链接。使用这种方式无需检查长度,因为如果没有在divs中找到<a>,循环将无法工作
我相信有一些方法可以做到这一点,但这就是它来在我的脑海里现在..检查下一个代码
第一个
AND通过使用.next().after()可以在最近的div之后显示ul
第一个

相关问题