[英]Is there a quick and easy way of using jQuery to insert an <li> into the middle of an <ol>?
我知道我可以使用append()将'li'添加到列表的末尾,但是如何将其添加到特定索引? 我是否只需要操作一个数组,然后使用更新后的数组刷新列表? 还是已经有用jQuery编写的函数允许我执行此操作?
我曾尝试查看jQuery API文档,但本周早些时候才开始使用JavaScript,但我在理解所有内容时遇到了麻烦。
结合使用nth-child()
和after
$( ".todos li:nth-child(2)" ).after(todoLi);
如果要在列表的第二项之后插入todoLi。
这是一个简短的片段,向您展示.after()的工作方式。
$('ul li:eq(1)').after("<li>hello world</li>")
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <ul> <li>1</li> <li>2</li> <li>3</li> </ul>
您可以这样尝试,其中index是您要插入的位置。
var index = 3;
$('ul li:nth-of-type('+index+')').after('<li><a href="/link">Zac was here</a></li>')
$('ol li').eq(index).after(your_element);
只要找出哪个元素在中间, insertAfter
它insertAfter
。
var newLi = $('<li></li')
var halfway = Math.floor($('ol > li').length);
newLi.insertAfter($('ol > li')[halfway]);
您可以尝试使用:nth-child()选择器来使用jQuery .after()方法。 例如,如果您想尝试在第二个li之后和第3个li之前添加您的li
$( "ul li:nth-child(2)" ).after('<li>added!</li>');
jQuery有一个函数之后或一个节点之前添加元素( .before()
/ .after()
然后,您可以使用.eq()
选择一个元素并将您的元素放置在所需的位置。
这是一个可以执行您想要的功能的小功能(基于0的索引)。 检查索引元素是否存在很重要,否则它将永远不会放入DOM中:
function appendAt($what, $to, index){
var $target = $to.children().eq(Math.max(0, index));
if($target.length !== 0){
$target.before($what);
}else{
$what.appendTo($to);
}
}
//Use it like that
appendAt($('<li>'), $('.todos'), 5); //The li with become the 6th element.
<ol class="list">
<li><a href="#">list 1</a></li>
<li class="active"><a href="#">list 2</a></li>
<li><a href="#">New Tag</a></li>
<li><a href="#">list 3</a></li>
<li><a href="#">list 4</a></li>
</ol>
$('li.active').after('<li><a href="#">New Tag</a></li>');
简单的方法是
var newLi="<li>This is test</li>";
$(".list li:nth-child(2)").after(newLi);
请记住,子索引从1开始,所以这里的2表示第二个li之后
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.