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

时间:2017-05-03 14:10:28

标签: javascript jquery dom prepend

我希望在将父元素添加到DOM后立即将表单添加到页面上的元素。当我过早地提前,即父元素不存在但我得到一个奇怪的beheavor。

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

如果我使用jQuery或甚至使用JS这样检查prepent元素的存在:

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

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

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

然后我得到 null

在父元素finnaly添加到页面后循环执行此操作后,我的前置元素不会消失。

因此,看起来我先前添加到DOM中的任何内容,但在发现父元素不存在之后被DOM拒绝。但这是正常的事吗?

1 个答案:

答案 0 :(得分:0)

它运作良好。

&#13;
&#13;
// 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);
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="myDiv"></div>
&#13;
&#13;
&#13;

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