正如您在此https://jsfiddle.net/yxvwfh6x/中看到的那样,我正在尝试在div
之前和之后添加元素。
var hi = $('<h1>Hi</h1>');
var div = $('div');
hi.insertAfter(div);
hi.insertBefore(div);
结果insertBefore
删除了上一个Hi
。请尝试使用此代码了解发生的情况。
var hi = $('<h1>Hi</h1>');
var div = $('div');
hi.insertAfter(div);
setTimeout(function(){
hi.insertBefore(div);
},1000);
这是jQuery的错误吗?
答案 0 :(得分:2)
因为hi
引用了同一个对象,所以遵循以下顺序
使用此代替
var div = $('div');
$('<h1>Hi</h1>').insertAfter(div);
$('<h1>Hi</h1>').insertBefore(div);
答案 1 :(得分:1)
这不是jQuery的错误。这是因为在执行'<h1>Hi</h1>'
语句后,对insertAfter()
的第一次引用现在位于DOM中。所以你可以改变它:
var h1Text = '<h1>Hi</h1>';
var div = $('div');
$(h1Text).insertAfter(div);
$(h1Text).insertBefore(div);
或者您也可以将clone()
与现有代码一起使用:
var hi = $('<h1>Hi</h1>');
var div = $('div');
hi.insertAfter(div);
hi.clone().insertBefore(div);
答案 2 :(得分:1)
<script>
var div = $('div');
div.insertAfter(div);
div.insertBefore(div);
</script>
答案 3 :(得分:0)
<div class="inner">1</div>
<div class="inner">2</div>
$( "<h1>Hi</h1>" ).insertBefore( ".inner" );
$( "<h1>Hi</h1>" ).insertAfter( ".inner" );
试试这个希望它有所帮助 JSFiddle:https://jsfiddle.net/ssuryar/336z5pnt/2/