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

问题描述:

我想在父元素被添加到DOM之后立即将一个表单添加到页面上的元素。当我提前太早时,即父元素不存在,我会得到一个奇怪的尝试。jQuery .prepend到不存在的元素 - 它是一个JS错误?

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

如果我检查prepent元素的正确使用jQuery,甚至有JS这样以后所有脑干:

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

我得到控制台前置元素。但是,如果父元素还不存在,则没有前插元素出现在页面上,如果我检查一秒钟后相同的元素:

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

然后我得到

通过这个循环之后当父元素finnaly被添加到页面时,我的prepend元素不会消失。

所以它看起来像我预先添加到DOM的第一个,但然后发现父元素不存在后被DOM拒绝。但这是一个正常的尝试吗?

+0

我似乎无法重现您所描述的内容。 [见这JSFiddle](https://jsfiddle.net/wchs6qen/)了解更多信息。 –

它工作得很好。

// 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>

我想你删除的项目添加的项目之后。这是一个假设

+0

OP说的是,如果在页面上没有任何'.myDiv',则document.getElementById(“myForm”)'不会返回'null',如果它在'... prepend (...)' – Titus

+0

不对它给我 –

+0

好吧,父div是由第三方脚本添加的,所以我不确定它会做什么,它几乎可以是父div被添加,然后删除然后再添加。所以阿曼所说的几乎是正确的事情 – user164863