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拒绝。但这是一个正常的尝试吗?
它工作得很好。
// 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>
我想你删除的项目添加的项目之后。这是一个假设
OP说的是,如果在页面上没有任何'.myDiv',则document.getElementById(“myForm”)'不会返回'null',如果它在'... prepend (...)' – Titus
不对它给我 –
好吧,父div是由第三方脚本添加的,所以我不确定它会做什么,它几乎可以是父div被添加,然后删除然后再添加。所以阿曼所说的几乎是正确的事情 – user164863
我似乎无法重现您所描述的内容。 [见这JSFiddle](https://jsfiddle.net/wchs6qen/)了解更多信息。 –