Javascript Jquery—在元素';s包含多个元素的文本
这不是的副本,因为我要插入的元素除了文本之外还有更多的元素,使用append将我的元素放置在错误的位置 假设我有很多元素,比如:Javascript Jquery—在元素';s包含多个元素的文本,javascript,jquery,dom,Javascript,Jquery,Dom,这不是的副本,因为我要插入的元素除了文本之外还有更多的元素,使用append将我的元素放置在错误的位置 假设我有很多元素,比如: <li class="target-line"> <blablabla></blablabla> <div class="known">...</div> Element's text <...variable element, can't query it to use
<li class="target-line">
<blablabla></blablabla>
<div class="known">...</div>
Element's text
<...variable element, can't query it to use .before()></...>
<more elements/>
</li>
...
元素的文本
使用contents()
和filter()
$('.targetline').contents().filter(function()){
返回this.nodeType==3
&&this.textContent.includes(“元素的文本”)//如果文本已知
}).after('New Element')
...
元素的文本
...
...
如果已知文本前的div,可以选择它,使用.next()
,然后在此之前追加:
$rows = $("li.target-line div.known") // get the known div
$afterText = $rows.next() //get the first element after the div
$afterText.before(newElement); //insert your element before that
没有检查如果文本后面没有元素会发生什么。在这种情况下,始终至少有一个 解决方案:
使用.nextSibling
用法:
let text=$('.known')[0].nextSibling
$(文本).after(“新元素””)
演示:
let text=$('.known')[0].nextSibling
$(文本)。之后(“新元素”)
...
元素的文本
...
...
我忘了提到“元素的文本”每行都不同。但是谢谢你这么做,但是考虑到只有一个文本节点,如果没有&&this.textContent.includes(“元素的文本”)
,它就可以工作。顺便问一下,nodeType==3
不是更好吗?这是一个整数,对吗?
let text = $('.known')[0].nextSibling
$(text).after('<p>New Element</p>')