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>
我认为您是在添加项目后删除项目。这是一个假设
我想在父元素添加到 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>
我认为您是在添加项目后删除项目。这是一个假设