我有一些HTML,例如:
<div id="parent">
<div id="foo1">foo1</div>
<div id="foo2">foo2</div>
<div id="foo3">foo3</div>
</div>
有没有一种方法使用jQuery在Bar
和#foo2
之间直接插入纯文本#foo3
,因此生成的HTML将如下所示:
<div id="parent">
<div id="foo1">foo1</div>
<div id="foo2">foo2</div>
Bar
<div id="foo3">foo3</div>
</div>
我可以使用<span>
将带有$("<span/>").text("Bar").insertAfter("#foo2")
标记的文本放入其中,但是是否有一种方法可以将纯文本放置在其中而没有<span>
?
答案 0 :(得分:4)
您可以使用.after
:
$('#foo2').after('bar');
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="parent">
<div id="foo1">foo1</div>
<div id="foo2">foo2</div>
<div id="foo3">foo3</div>
</div>
答案 1 :(得分:2)
使用document.createTextNode("bar")
:
$("#foo2").after(document.createTextNode("bar"))
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="parent">
<div id="foo1">foo1</div>
<div id="foo2">foo2</div>
<div id="foo3">foo3</div>
</div>
答案 2 :(得分:1)
如果您需要使用普通JavaScript的替代方法,则可以使用insertAdjacentText()
document.getElementById('foo2').insertAdjacentText('afterend', 'bar');
<div id="parent">
<div id="foo1">foo1</div>
<div id="foo2">foo2</div>
<div id="foo3">foo3</div>
</div>
如果您有兴趣,第一个参数提供其他选择:
element.insertAdjacentText( position , element );
位置
一个
DOMString
,代表相对于元素的位置;必须是以下字符串之一:
'beforebegin'
:在元素本身之前。'afterbegin'
:在元素内,在其第一个子元素之前。'beforeend'
:就在元素内,位于其最后一个子元素之后。'afterend'
:在元素本身之后。元素
DOMString
代表要插入树中的文本。