javascript - 如何使用jquery添加元素

标签 javascript jquery

我想在单击事件上添加元素,有一个输入文本元素,当用户单击添加时,我想将其作为项目添加到无序列表中。这很简单,我更喜欢只用 JS 来完成,但必须使用 JQuery。所以,基本上我想:

  1. 获取输入文本的值
  2. 将 li 项附加到 ul 列表
  3. 为 li 项目附加标签
  4. 将输入中的值添加为标签文本。

这是我的代码 - 它绝对不起作用,但上述 4 个步骤是我想在 JQuery 中实现的:

$(document).ready(function(){
    var $add_button = $('#add-item')
    var newItem;
    var $incompleteTasks = $('#incomplete-tasks');
    $add_button.click(function(){
        newItem = $('#new-task').val();
        // append new item to incomplete tasks ul
        $incompleteTasks.append('<li>appended</li>')
            .append('<label></label>').text(newItem);
    });
});

最佳答案

有了这个:

$incompleteTasks
.append('<li>appended</li>')
.append('<label></label>')
.text(newItem);

您正在使用 chaining 。这意味着每个 .append(something)返回$incompleteTasks具有更新内容的元素。
调用.text(newItem)最后,您将用单个输入字段值替换元素的全部内容:

$incompleteTasks
.append('<li>appended</li>')
//RESULT: <ul><li>appended</li></ul>

.append('<label></label>')
//RESULT: <ul><li>appended</li><label></label></ul>

.text(newItem);
//RESULT: <ul>newItem</ul>

如果要将值附加到<label>然后是<label>...</label><ul>元素,你可以这样做:

$incompleteTasks.append('<li><label>'+newItem+'</label></li>');
// OR:
$('<li><label>'+newItem+'</label></li>').appendTo($incompleteTasks);
// OR:
var label = $('<label/>').text(newItem);
$('<li />').append(label).appendTo($incompleteTasks);
// ...

您最终应该得到如下代码:

$(document).ready(function(){
    var $add_button = $('#add-item')
    var newItem;
    var $incompleteTasks = $('#incomplete-tasks');
    
    $add_button.click(function(){
        
        newItem = $('#new-task').val();
        // Create <label> element and append text in:
        var label = $('<label/>').text(newItem);
        // Create <li> element, append prevously created <label>, and finally append that <li> to <ul>:
        $('<li />').append(label).appendTo($incompleteTasks);
        
    });
});
label{
 display:block;
 border: 1px solid #e0e0e0;
 background:#fafafa;
 width:200px;
 padding: 5px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type=text id=new-task>
<button id=add-item>add-item</button>
<ul id=incomplete-tasks></ul>

关于javascript - 如何使用jquery添加元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29198587/

相关文章:

javascript - 移动没有 before 伪元素的 html block

javascript - 使用JQuery获取文本框中的光标位置

javascript - 如何选中我的案例中的所有复选框?

javascript - 如何通过单击按钮防止引导框模式关闭?

javascript - Highcharts : is it possible to change the font of the label in Highchart via a click of a button?

php - Javascript getTime 到 php 日期

javascript - 是否可以使用Jquery操作表单的目标窗口

php - 使用 PHP 和 jQuery 进行拖放

jquery - 以模态自动播放 Youtube 视频? (Avada Wordpress 主题)

javascript - 处理在 Markdown React 组件中呈现的链接的点击事件