[英]Jquery - append element after an element's text with multiple elements inside
这不是jQuery - add element after text的副本,因为我要插入的元素除了文本之外还有更多元素,使用 append 将我的元素放在错误的位置。
假设我有很多元素,例如:
<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>
我想在Element's text
之后插入一个复杂的元素newElement
(不是一个我可以写成字符串的Element's text
。
我该怎么做? 没有 Jquery 的答案是可以的,只要它们很简单。
使用contents()
和filter()
$('.target-line').contents().filter(function() { return this.nodeType === 3 && this.textContent.includes("Element's text") // if text is known }).after('<div>New Element</div>')
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <li class="target-line"> <blablabla></blablabla> <div class="known">...</div> Element's text <div class="unknown">...</div> <div class="unknown2">...</div> </li>
使用.nextSibling
let text = $('.known')[0].nextSibling
$(text).after('<p>New Element</p>')
let text = $('.known')[0].nextSibling $(text).after('<p>New Element</p>')
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <li class="target-line"> <blablabla></blablabla> <div class="known">...</div> Element's text <div class="unknown">...</div> <div class="unknown2">...</div> </li>
如果文本之前的 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
没有检查如果文本后面没有元素会发生什么。 在这种情况下,总是至少有一个。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.