【问题标题】:How can I replace some HTML tags between two specific elements?如何在两个特定元素之间替换一些 HTML 标签?
【发布时间】:2017-09-21 12:54:29
【问题描述】:

我有这个 HTML:

 <div class="header">A subject</div>
    <span class="start"></span>
    <table>
     <tbody>
      <tr><td>1</td></tr>
     </tbody>
    </table>
    <p>a paragraph</p>
    <span class="end"></span>
    <div class="footer">a note</div>

我还有一个变量,其中包含一些其他标签,如下所示:

var html = "<section> something <a href="#">my link</a> </section>;

我要做的就是用html 变量替换.start.end 之间的所有内容。我该怎么做?

这是预期的结果:

 <div class="header">A subject</div>
    <span class="start"></span>
    <section> something <a href="#">my link</a> </section>
    <span class="end"></span>
    <div class="footer">a note</div>

由于没有任何包装器,所以我不能使用.html().replaceWith() 函数。有什么想法吗?

【问题讨论】:

标签: javascript jquery html


【解决方案1】:

由于您使用的是 jQuery,您可以使用.nextUntil() 方法。它允许您选择一系列元素,直到指定为方法参数的元素。

$('.start').nextUntil('.end') 将选择从.start.end 的每个元素(无论这听起来多么悦耳)。

之后,您可以删除选定的元素并使用.before() 添加所需的 HTML。

$('.start').nextUntil('.end').remove();
$('.end').before(myHTMLVariable);

(供参考:https://api.jquery.com/nextUntil/

【讨论】:

    【解决方案2】:

    为此,您可以选择.start,然后使用nextUntil() 选择它和.end 之间的元素,然后再删除它们。然后就可以在.start之后插入新的内容了,像这样:

    $('.start').nextUntil('.end').remove();
    $('<section> something <a href="#">my link</a></section>').insertAfter('.start');
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <div class="header">A subject</div>
    <span class="start">START</span>
    <table>
      <tbody>
        <tr>
          <td>1</td>
        </tr>
      </tbody>
    </table>
    <p>a paragraph</p>
    <span class="end">END</span>
    <div class="footer">a note</div>

    【讨论】:

    • 哇哦..你对 jQuer 有很好的了解。 . .!点赞。
    • 顺便说一句,使用nextUntil() 函数不是很慢吗?我不知道它是如何实现的,但我总是害怕使用它。它似乎需要大量处理。不是吗?
    • 它不会是世界上最快的东西,但在 99% 的情况下应该仍然足够快。如果您需要终极性能,我建议您根本不要使用 jQuery,因为在某些情况下它比原生慢几个数量级。
    • @MartinAJ 它不应该...相当容易地采取兄弟姐妹,在开始索引处切片然后迭代剩余直到找到选择器并中断
    • 这意味着一件好事。只是对@RoryMcCrossan 对您问题的有用回答表示赞赏!
    猜你喜欢
    • 1970-01-01
    • 2021-06-15
    • 1970-01-01
    • 1970-01-01
    • 2015-01-01
    • 2013-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多