我正在尝试将新的 div 元素动态添加到由公共类表示的现有元素集。这组元素上还有一个 jQuery .data(),我用它来做簿记工作。
问题是当我尝试使用“before()”添加新元素时,前面提到的 .data() 值会被清除。但这不是使用“after()”的情况。
不确定这是否有帮助,但传入的 div 元素与要添加它们的现有 div 元素集共享同一个类。
只需在 javascript 代码中切换 .after() 和 .before() 之间的行即可了解区别。
我还将在此处粘贴代码以方便参考。
HTML 片段
<div id="parent-container">
<div id='child1' class="child">I am a child 1 - static</div>
</div>
JavaScript 代码段
$(document).ready(function() {
var children = $(".child");
children.data("newData", "Data for .child elements");
alert("before dom manipulation -> " + children.data("newData"));
var dynamicChildDiv = $("<div id='child2' class='child'>I am child 2 - dynamic</div>");
// Adding a new div "after" the first .child works fine as far as preserving the existing properties on .class
$(".child:first").after(dynamicChildDiv);
// Adding a new div "before" the first .child causes havoc on the stored properties on .child
//UNCOMMENT ME AFTER COMMENTING THE ".after" method above.
//$(".child:first").before(dynamicChildDiv);
children = $(".child");
alert("after dom manipulation -> " + children.data("newData"));
});