如何将列表项添加到现有无序列表

发布于 2024-07-27 12:11:52 字数 821 浏览 12 评论 0原文

我的代码看起来像这样:

<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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(14

帝王念 2024-08-03 12:11:52

这样做可以做到这一点:

$("#header ul").append('<li><a href="/user/messages"><span class="tab">Message Center</span></a></li>');

有两件事:

  • 您可以将
  • 附加到
      本身。
  • 您需要使用与 HTML 中使用的引号类型相反的引号。 因此,由于您在属性中使用双引号,因此请将代码用单引号引起来。

This would do it:

$("#header ul").append('<li><a href="/user/messages"><span class="tab">Message Center</span></a></li>');

Two things:

  • You can just append the <li> to the <ul> itself.
  • You need to use the opposite type of quotes than what you're using in your HTML. So since you're using double quotes in your attributes, surround the code with single quotes.
溺深海 2024-08-03 12:11:52

您还可以以更“对象”且仍然易于阅读的方式进行操作:

$('#content ul').append(
    $('<li>').append(
        $('<a>').attr('href','/user/messages').append(
            $('<span>').attr('class', 'tab').append("Message center")
)));

那么您不必与引号进行斗争,但必须保留大括号的痕迹:)

You can also do it in a more 'object' and still easy-to-read way:

$('#content ul').append(
    $('<li>').append(
        $('<a>').attr('href','/user/messages').append(
            $('<span>').attr('class', 'tab').append("Message center")
)));

You don't have to fight with quotes then, but you must keep trace of braces :)

月依秋水 2024-08-03 12:11:52

如果您只是在该 li 中添加文本,则可以使用:

 $("#ul").append($("<li>").text("Some Text."));

If you are simply adding text in that li, you can use:

 $("#ul").append($("<li>").text("Some Text."));
初懵 2024-08-03 12:11:52

使用“after”而不是“append”怎么样?

$("#content ul li:last").after('<li><a href="/user/messages"><span class="tab">Message Center</span></a></li>');

“.after()”可以在匹配元素集合中的每个元素之后插入由参数指定的内容。

How about using "after" instead of "append".

$("#content ul li:last").after('<li><a href="/user/messages"><span class="tab">Message Center</span></a></li>');

".after()" can insert content, specified by the parameter, after each element in the set of matched elements.

近箐 2024-08-03 12:11:52

jQuery 提供了以下选项,可以满足您在这种情况下的需求:

append 用于在选择器中指定的父 div 的末尾添加一个元素:

$('ul.tabs').append('<li>An element</li>');

prepend 用于在选择器中指定的父 div 的顶部/开头添加一个元素:

$('ul.tabs').prepend('<li>An element</li>');

insertAfter 允许您在下一个选择中插入一个元素在您指定的元素之后。 然后,您创建的元素将被放入 DOM 中指定的选择器结束标记之后:

$('<li>An element</li>').insertAfter('ul.tabs>li:last');
will result in:
<li><a href="/user/edit"><span class="tab">Edit</span></a></li>
<li>An element</li>

insertBefore 将执行与上述相反的操作:

$('<li>An element</li>').insertBefore('ul.tabs>li:last');
will result in:
<li>An element</li>
<li><a href="/user/edit"><span class="tab">Edit</span></a></li>

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 parent div specified in the selector:

$('ul.tabs').append('<li>An element</li>');

prepend is used to add an element at the top/start of the parent div specified in the selector:

$('ul.tabs').prepend('<li>An element</li>');

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:

$('<li>An element</li>').insertAfter('ul.tabs>li:last');
will result in:
<li><a href="/user/edit"><span class="tab">Edit</span></a></li>
<li>An element</li>

insertBefore will do the opposite of the above:

$('<li>An element</li>').insertBefore('ul.tabs>li:last');
will result in:
<li>An element</li>
<li><a href="/user/edit"><span class="tab">Edit</span></a></li>
梦冥 2024-08-03 12:11:52

您应该附加到容器,而不是最后一个元素:

$("#content ul").append('<li><a href="/user/messages"><span class="tab">Message Center</span></a></li>');

append() 函数可能应该在 jQuery 中称为 add(),因为它有时会让人感到困惑。 您可能会认为它在给定元素之后附加了某些内容,但实际上它将其添加到元素中。

You should append to the container, not the last element:

$("#content ul").append('<li><a href="/user/messages"><span class="tab">Message Center</span></a></li>');

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.

不如归去 2024-08-03 12:11:52
$("#content ul").append('<li><a href="/user/messages"><span class="tab">Message Center</span></a></li>');
$("#content ul").append('<li><a href="/user/messages"><span class="tab">Message Center</span></a></li>');
究竟谁懂我的在乎 2024-08-03 12:11:52

而不是

$("#header ul li:last")

尝试

$("#header ul")

Instead of

$("#header ul li:last")

try

$("#header ul")
此生挚爱伱 2024-08-03 12:11:52

使用:

$("#content ul").append('<li><a href="/user/messages"><span class="tab">Message Center</span></a></li>');

这里有一些关于代码可读性的反馈(博客的无耻插件)。
http://coderob.wordpress.com/2012/02/02/code-可读性

考虑将新元素的声明与将它们添加到 UL 的操作分开。它看起来像这样:

var tabSpan = $('<span/>', {
    html: 'Message Center'
});
var messageCenterAnchor = $('<a/>', {
    href='/user/messages',
    html: tabSpan
});
var newListItem = $('<li/>', {
    html: messageCenterAnchor,
    "id": "myIDGoesHere"
});    // NOTE: you have to put quotes around "id" for IE..

$("content ul").append(newListItem);

Use:

$("#content ul").append('<li><a href="/user/messages"><span class="tab">Message Center</span></a></li>');

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:

var tabSpan = $('<span/>', {
    html: 'Message Center'
});
var messageCenterAnchor = $('<a/>', {
    href='/user/messages',
    html: tabSpan
});
var newListItem = $('<li/>', {
    html: messageCenterAnchor,
    "id": "myIDGoesHere"
});    // NOTE: you have to put quotes around "id" for IE..

$("content ul").append(newListItem);
妥活 2024-08-03 12:11:52

使用:

// Creating and adding an element to the page at the same time.
$("ul").append("<li>list item</li>");

Use:

// Creating and adding an element to the page at the same time.
$("ul").append("<li>list item</li>");
赤濁 2024-08-03 12:11:52

这是最短的方法:

list.push($('<li>', {text: blocks[i] }));
$('ul').append(list);

其中 blocks 是一个数组。 并且您需要循环遍历数组。

This is the shortest way you can do that:

list.push($('<li>', {text: blocks[i] }));
$('ul').append(list);

Where blocks is an array. And you need to loop through the array.

长安忆 2024-08-03 12:11:52

这是另一张

$("#header ul li").last().html('<li> Menu 5 </li>');

This is another one

$("#header ul li").last().html('<li> Menu 5 </li>');
小矜持 2024-08-03 12:11:52

使用 prepend() 在 ul 中添加 li 作为第一项jquery的功能

$("ul").prepend("<li>first item</li>");

ul中添加li作为最后一项使用 append() 函数/" rel="nofollow noreferrer">jquery

$("ul").append("<li>last item</li>");

Add li in ul as first item using prepend() function of jquery

$("ul").prepend("<li>first item</li>");

Add li in ul as last item using append() function of jquery

$("ul").append("<li>last item</li>");
清欢 2024-08-03 12:11:52

只是添加到此线程 - 如果您移动现有项目,您将需要使用克隆,然后使用 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));

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文