如何将列表项添加到现有无序列表
我的代码看起来像这样:
<div id="header">
<ul class="tabs">
<li><a href="/user/view"><span class="tab">Profile</span></a></li>
<li><a href="/user/edit"><span class="tab">Edit</span></a></li>
</ul>
</div>
我想使用 jQuery 将以下内容添加到列表中:
<li><a href="/user/messages"><span class="tab">Message Center</span></a></li>
我尝试了这个:
$("#content ul li:last").append("<li><a href="/user/messages"><span class="tab">Message Center</span></a></li>");
但这会添加新的 li
inside 最后li
(就在结束标记之前),而不是在它之后。 添加此 li
的最佳方式是什么?
I have code that looks like this:
<div id="header">
<ul class="tabs">
<li><a href="/user/view"><span class="tab">Profile</span></a></li>
<li><a href="/user/edit"><span class="tab">Edit</span></a></li>
</ul>
</div>
I'd like to use jQuery to add the following to the list:
<li><a href="/user/messages"><span class="tab">Message Center</span></a></li>
I tried this:
$("#content ul li:last").append("<li><a href="/user/messages"><span class="tab">Message Center</span></a></li>");
But that adds the new li
inside the last li
(just before the closing tag), not after it. What's the best way to add this li
?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(14)
这样做可以做到这一点:
有两件事:
附加到
本身。
This would do it:
Two things:
<li>
to the<ul>
itself.您还可以以更“对象”且仍然易于阅读的方式进行操作:
那么您不必与引号进行斗争,但必须保留大括号的痕迹:)
You can also do it in a more 'object' and still easy-to-read way:
You don't have to fight with quotes then, but you must keep trace of braces :)
如果您只是在该
li
中添加文本,则可以使用:If you are simply adding text in that
li
, you can use:使用“after”而不是“append”怎么样?
“.after()”可以在匹配元素集合中的每个元素之后插入由参数指定的内容。
How about using "after" instead of "append".
".after()" can insert content, specified by the parameter, after each element in the set of matched elements.
jQuery 提供了以下选项,可以满足您在这种情况下的需求:
append
用于在选择器中指定的父div
的末尾添加一个元素:prepend
用于在选择器中指定的父div
的顶部/开头添加一个元素:insertAfter
允许您在下一个选择中插入一个元素在您指定的元素之后。 然后,您创建的元素将被放入 DOM 中指定的选择器结束标记之后:insertBefore
将执行与上述相反的操作:jQuery comes with the following options which could fulfil your need in this case:
append
is used to add an element at the end of the parentdiv
specified in the selector:prepend
is used to add an element at the top/start of the parentdiv
specified in the selector:insertAfter
lets you insert an element of your selection next after an element you specify. Your created element will then be put in the DOM after the specified selector closing tag:insertBefore
will do the opposite of the above:您应该附加到容器,而不是最后一个元素:
append() 函数可能应该在 jQuery 中称为 add(),因为它有时会让人感到困惑。 您可能会认为它在给定元素之后附加了某些内容,但实际上它将其添加到元素中。
You should append to the container, not the last element:
The append() function should've probably been called add() in jQuery because it sometimes confuses people. You would think it appends something after the given element, while it actually adds it to the element.
而不是
尝试
Instead of
try
使用:
这里有一些关于代码可读性的反馈(博客的无耻插件)。
http://coderob.wordpress.com/2012/02/02/code-可读性
考虑将新元素的声明与将它们添加到 UL 的操作分开。它看起来像这样:
Use:
Here is some feedback regarding code readability (shameless plug for a blog).
http://coderob.wordpress.com/2012/02/02/code-readability
Consider separating the declaration of your new elements from the action of adding them to your UL.. It would look something like this:
使用:
Use:
这是最短的方法:
其中
blocks
是一个数组。 并且您需要循环遍历数组。This is the shortest way you can do that:
Where
blocks
is an array. And you need to loop through the array.这是另一张
This is another one
使用 prepend() 在
ul
中添加li
作为第一项jquery的功能在
ul
中添加li
作为最后一项使用 append() 函数/" rel="nofollow noreferrer">jqueryAdd
li
inul
as first item using prepend() function of jqueryAdd
li
inul
as last item using append() function of jquery只是添加到此线程 - 如果您移动现有项目,您将需要使用
克隆
,然后使用 true/false 来确定是否克隆/深度克隆事件好吧(https://api.jquery.com/clone/)。例子:
$("#content ul").append($('.existing_li').clone(true));
Just to add to this thread - if you are moving an existing item you will need to use
clone
and then true/false on whether you clone/deep-clone the events as well (https://api.jquery.com/clone/).Example:
$("#content ul").append($('.existing_li').clone(true));