【问题标题】:Use jquery to only insert a start tag or end tag使用 jquery 只插入一个开始标签或结束标签
【发布时间】:2013-10-23 05:32:39
【问题描述】:

我正在学习使用

replaceWith('<section>')

after('<section>')

实际上会在每种情况下插入完整的元素:

<section></section>

当使用结束标签时

replaceWith('</section>')

这样的调用似乎被忽略了。

有没有办法禁用这种行为?我需要在 DOM 中的某一点插入一个开始标签,并在另一点插入一个结束标签。

wrapAll() 

我也不能上班。我认为可能与被包装的东西有关的不是所有兄弟姐妹......

【问题讨论】:

  • wrapAll 可能是正确的解决方案。您可以发布一个演示您的问题的 jsfiddle 吗?
  • 这就是 DOM 的工作原理。这就是为什么有 wrap 和 wrapAll 方法的原因,在调用这些函数之前,请确保查询返回预期的集合。
  • 这最终奏效了:jsfiddle.net/H36UE/1 示例 HTML 更接近地代表了正在遇到的实际 DOM 树。

标签: javascript jquery dom-manipulation


【解决方案1】:

我不相信 jquery 会允许这种行为,因为这实际上会允许你使你的标记无效。

处理 dom - 它将这些标签组视为“节点”。它们被组合为具有属性和值的对象以及依赖于它们的许多其他对象。所以简单地“移动结束标签的文本”并不是想要的效果......

为什么不在半标签的“中间”抓住所有你想要的东西……创建一个新元素,然后用 append 将你的“填充”放入其中?像这样:

var theFilling = $('ul#theFilling'),
    theCookieCrust = document.createElement('section');

$(theFilling).appendTo($(theCookieCrust));

$('ul#theFilling').remove();

$(theCookieCrust).appendTo('body');

【讨论】:

    猜你喜欢
    • 2020-08-11
    • 2016-07-19
    • 2018-07-31
    • 2016-01-11
    • 2012-05-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多