javascript - wrapInner 不会将子元素添加到 DOM 中的包装元素中

标签 javascript jquery dom

我正在尝试做一个innerWrap,然后操作wrap的内容。然而,包装似乎从来没有添加它的 child !这是一个显示问题的测试:

var images = $(element).find('img');
console.log(images);
var wrap = document.createElement("div")
$(element).wrapInner(wrap)
var images2 = $(wrap).find('img');
console.log(images2);

<强> View as JSFiddle

有什么想法吗?

最佳答案

显然,当您将一个元素传递给 .wrapInner() 函数时,该元素的结构相同的副本(而不是元素本身)将包裹在内容中。在您的示例中,您会注意到以下内容:

  • #element 最终按照预期拥有一个子元素:一个包含三个图像的 div
  • 但是 wrap.parentNodenull 表示它存在于内存中,未附加到 DOM
  • 并且 wrap === $("#element").children().get(0) 返回 false 确认假设

解决方案:像这样修改您的代码:

var $images1 = $("#element").find('img');
$("#element").wrapInner("<div></div>");
var $images2 = $("#element").children().find("img");
// the div can be accessed by doing $("#element").children()
console.log($images1.length, $images2.length, $images1.get(0) === $images2.get(0));

关于javascript - wrapInner 不会将子元素添加到 DOM 中的包装元素中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25701368/

相关文章:

php - $.ajax 错误无法捕获 php 抛出的异常

jquery - 将CSS添加到jquery 'flux'动画

javascript - switch 内的小 JS 类型错误(不是函数)

javascript - iOS Safari Javascript 无法运行,但可以在桌面和 Android 上运行

javascript - 遍历无序列表以按顺序显示/隐藏元素

javascript - HTML 音频录制到静音?

javascript - 为什么我的 css 文件不适用于 MCV 元素?

javascript - 我如何判断哪个组件当前处于事件状态 Angular 5

javascript - 在 jQuery 中,如何测试一个元素是否是同一类的多个元素中的第一个?

javascript - 添加新列表项时,我创建的切换功能不起作用