jQuery .prepend 到不存在的元素 - 这是一个 JS 错误吗?

jQuery .prepend to non-existent element - is it a JS bug?

我想在父元素添加到 DOM 后立即将表单添加到页面上的元素。当我过早添加前缀时,即父元素不存在但我得到一个奇怪的行为。

jQuery(".myDiv").prepend('<div id="myForm">Content</div>');

如果我在 jQuery 之后立即检查前置元素是否存在,甚至像这样使用 JS:

var res = document.getElementById("myForm")
console.log(res);

我在控制台中获得了前置元素。但是,如果父元素不存在,则页面上不会出现前置元素,如果我在一秒钟后检查相同的元素:

setTimeout(function() {
    var res = document.getElementById("myForm")
    console.log(res);
}, 1000);

然后我得到 null

当父元素 finnaly 添加到页面时循环遍历后,我的前置元素不会消失。

所以看起来我添加到 DOM 前面的任何内容,但在发现父元素不存在后被 DOM 拒绝。但这是正常行为吗?

效果很好。

// When div is present
jQuery(".myDiv").prepend('<div id="myForm">Content</div>');

var res = document.getElementById("myForm")
console.log('mydiv:',res);

setTimeout(function() {
    var res = document.getElementById("myForm")
    console.log('mydiv:',res);
}, 1000);

// When div is not present
jQuery(".noDiv").prepend('<div id="noForm">Content</div>');

var res = document.getElementById("noForm")
console.log('noForm:',res);

setTimeout(function() {
    var res = document.getElementById("noForm")
    console.log('noForm:',res);
}, 1000);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="myDiv"></div>

我认为您是在添加项目后删除项目。这是一个假设