javascript - 用给定节点包裹单个节点

标签 javascript jquery dom

我有一个picture指向 <img> 的变量我的文档树中的元素。我想用 <span> 来包装标签。当我使用普通 DOM 函数执行此操作时,一切都会按预期工作:

var container = document.createElement("span");
container.style.border = "1em solid red";
container.innerHTML = "Container";
picture.parentNode.appendChild(container);
container.appendChild(picture);
container.style.borderColor = "green"; // Result: green on screen

更具体地说,container指向唯一的<span> 。但是当我用 jQuery wrap() method 这样做时:

var container = $("<span></span>")
    .css({border: "1em solid red"})
    .text("Container");
container.css({borderColor: "yellow"}); // Result: yellow on screen
$(picture).wrap(container);
container.css({borderColor: "green"});

...查询克隆我的节点并将图片包裹在克隆周围,因此 container指向从未使用过且与文档保持分离的节点。我知道发生这种情况是因为 wrap() jQuery 链中的每个匹配元素都需要一个包装器对象(克隆完全有意义)。

有没有一种优雅的 jQuerish 方式来包装单个 <img>具有给定 <span> 的标签并保留对此类 <span> 的引用进一步使用?

最佳答案

这应该可以做到:

var picWrapper = $(picture).wrap(container).parent();

将其包装在 span 中后,span 元素将成为它的新父元素。

关于javascript - 用给定节点包裹单个节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24578410/

相关文章:

javascript - HTML5 Colspan - 备选方案

javascript - 'production' 代码中不推荐使用 jQuery .css

javascript - 创建折叠评论区

javascript - 尝试抽象 WebAudio API xhr 请求的部分时,无法将 DOM 元素传递给 Javascript 中的构造函数

java - 无法转换 org.apache.batik.bridge.UpdateManager

javascript - 使用 Javascript 在 Illustrator 中保存文件

javascript - D3.js v5 Domain() 不为数组取变量

javascript - 如何解决mouseenter和mouseleave重叠的困境?

javascript - 带有 css 选择器的 addRule/insertRule

javascript - 使用 for 循环语句理解数组迭代