[英]jQuery created element with insertAfter is not working
该页面上有几个div,其类别为“ wrap-me”。
我想在“ wrap-me”之后添加一个元素“ add-me”,并将两者双重包裹在“ wrapper-inner”和“ wrapper”中。
基本上-它应该看起来像这样:
<div class="wrapper">
<div class="wrapper-inner">
<div class="wrap-me"></div>
<div class="add-me"></div>
</div>
</div>
这是我的实现:
const $addMe = $("<div>", { class: "add-me" });
const $wrapper = $('<div>', { class: "wrapper" });
const $wrapperInner = $('<div>', { class: "wrapper-inner" });
$.each($(".wrap-me"), (i, wrapMe) => {
const $wrapMe = $(wrapMe);
$wrapMe.wrap($wrapper).wrap($wrapperInner);
$addMe.insertAfter($wrapMe);
});
这是输出:
<div class="wrapper">
<div class="wrapper-inner">
<div class="wrap-me"></div>
</div>
</div>
它几乎在那儿,唯一的是“ add-me”没有插入到DOM中。 怎么了?
//get the template var wrapperTemplate = $('#wrapperTemplate').text(); $('.wrap-me').each(function(index, element){ //create a new element to put in the DOM var $wrapper = $(wrapperTemplate); //put the wrapper after the element we are going to replace $wrapper.insertAfter(element); //move the element into the wrapper where it should be $wrapper.find('.wrapper-inner').prepend(element); });
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <div class="wrap-me">A</div> <div class="wrap-me">B</div> <div class="wrap-me">C</div> <div class="wrap-me">D</div> <!-- HTML template for what we want to add, so it's not in the javascript --> <script type="text/html" id="wrapperTemplate"> <div class="wrapper"> <div class="wrapper-inner"> <div class="add-me"></div> </div> </div> </script>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.