如何将李添加到另一个李的顶部

时间:2018-02-15 19:40:52

标签: javascript html css

我正在创建用户输入的元素列表。此列表中的每个元素都在JavaScript中包含一个动态创建的按钮。

我试图让它当我点击这个动态创建的按钮(“已启动”)时,它会自动从原始li中删除整个列表元素并将其移动到另一个li的顶部。

我的代码:[编辑:出于某种原因,我的代码片段没有显示第二个列表“正在运行”但它显示在我的本地控制台中,不确定我的代码是否有问题?]

// Dynamically creates a new li element with 'started' button after user puts in text and clicks a button similar to 'submit'
$(document).ready(
  $("#new-item").on('click', function() {
    // once the document loads, create new item with this function
    var text = $('#task').val();
    if (text != '') {
      $('#todo-list').prepend("<li class='addedTask'> <button id='started'>Started</button>" + text + '</li>' + '</br>');
    }

  })
);

$(".addedTask").on('click', "button", function() {
  var completedItem = $(this).parent();
    $('#doing-list').append($('#todo-list'( completedItem)).removeClass(completedItem));
});
header {
	background-color: #026aa7;
	height: 30px;
	text-align: center;
	padding: 5px 8px;
}

header a {
	height: 30px;
	width: 80px;
	text-align: center;
	background-image: url(https://a.trellocdn.com/dist/images/header-logo-2x.01ef898811a879595cea.png);
	background-repeat: no-repeat;
	text-align: center;
	display: inline-block;
	background-size: 80px 30px;
}

body {
	background-color: #0078c0;
	margin: 0px;
    font-family: sans-serif;
}

li {
    list-style-type: none;
    margin-left: 8px;
    text-indent: 10px;
/*    cursor: pointer;*/
}


li:hover {
    background: #ddd;
}

li.addedTask {
    border: 1px solid white;
    border-radius: 4px;
    padding: 15px;
    width: 83%;
    background-color: white;
}

#started {
    float: left;
    background-color: white;
    border-radius: 6px;
}

.column {
    background-color: #E3E3E3;
    min-height: 100px;
    width: 25%;
    box-shadow: 1px 1px 3px $shadow;
    display: inline-block;
    position: asolute;
    margin: 5px;
    vertical-align: top;
    position: relative;
    top: 75px;
    right: 287px; 
    border-radius: 5px;
}

.column h1 {
    font-size: 20px;
    padding-left: 10px;
    position: relative;
    bottom: .5px;
    color: #393939;
    margin: 5px;
}




#new-item {
    position: relative;
    left: 40px;
    top: 20px;
    font-family: sans-serif;
    padding: 4px;
    width: 100px;
    background-color: #ffffff;
    border-radius: 4px;
}

#task {
    position: relative;
    left: 25px;
    top: 20px;
    height: 20px;
    width: 200px;
    padding: 10px;
    border-radius: 4px;
    padding-left: 4px;
}
<html>

<head>

  <title> HW03 Javascript and jQuery </title>
  <link rel="stylesheet" href="_css/style.css">
</head>

<body>
  <header>
    <a href="https://trello.com"></a>
  </header>

  <section>
    <!-- create input tag for user input -->
    <input type="text" id="task">


    <!-- button takes input and adds a new element with content to 'list_do' -->
    <button id="new-item"> Add a card </button>


    <!-- ability to move items between list_todo and list_doing -->
    <div class="column" id="to-do">
      <h1> To Do </h1>
      <li id="todo-list"></li>
    </div>

    <div class="column" id="doing">
      <h1> Doing </h1>
      <li id="doing-list"></li>
    </div>

  </section>
  <script type="text/javascript" src="https://code.jquery.com/jquery-2.1.1.min.js"></script>
  <script type="text/javascript" src="_js/main.js">
  </script>
</body>

</html>

这是我最终看起来的样子:

enter image description here

2 个答案:

答案 0 :(得分:1)

  • 您使用错误的选择器.addedTask进行事件委派。
  • 使用prepend功能在顶部添加元素。

要测试此代码段,请在点击“运行代码段”后单击Full Page

// Dynamically creates a new li element with 'started' button after user puts in text and clicks a button similar to 'submit'
$(document).ready(
  $("#new-item").on('click', function() {
    // once the document loads, create new item with this function
    var text = $('#task').val();
    if (text != '') {
      $('#todo-list').prepend("<li class='addedTask'> <button id='started'>Started</button>" + text + '</li>' + '</br>');
    }

  })
);

$("#todo-list").on('click', "button", function() {

  var completedItem = $(this).parent();
  $('#doing-list').prepend($(completedItem));
});
header {
  background-color: #026aa7;
  height: 30px;
  text-align: center;
  padding: 5px 8px;
}

header a {
  height: 30px;
  width: 80px;
  text-align: center;
  background-image: url(https://a.trellocdn.com/dist/images/header-logo-2x.01ef898811a879595cea.png);
  background-repeat: no-repeat;
  text-align: center;
  display: inline-block;
  background-size: 80px 30px;
}

body {
  background-color: #0078c0;
  margin: 0px;
  font-family: sans-serif;
}

li {
  list-style-type: none;
  margin-left: 8px;
  text-indent: 10px;
  /*    cursor: pointer;*/
}

li:hover {
  background: #ddd;
}

li.addedTask {
  border: 1px solid white;
  border-radius: 4px;
  padding: 15px;
  width: 83%;
  background-color: white;
}

#started {
  float: left;
  background-color: white;
  border-radius: 6px;
}

.column {
  background-color: #E3E3E3;
  min-height: 100px;
  width: 25%;
  box-shadow: 1px 1px 3px $shadow;
  display: inline-block;
  position: asolute;
  margin: 5px;
  vertical-align: top;
  position: relative;
  top: 75px;
  right: 287px;
  border-radius: 5px;
}

.column h1 {
  font-size: 20px;
  padding-left: 10px;
  position: relative;
  bottom: .5px;
  color: #393939;
  margin: 5px;
}

#new-item {
  position: relative;
  left: 40px;
  top: 20px;
  font-family: sans-serif;
  padding: 4px;
  width: 100px;
  background-color: #ffffff;
  border-radius: 4px;
}

#task {
  position: relative;
  left: 25px;
  top: 20px;
  height: 20px;
  width: 200px;
  padding: 10px;
  border-radius: 4px;
  padding-left: 4px;
}
<html>

<head>

  <title> HW03 Javascript and jQuery </title>
  <link rel="stylesheet" href="_css/style.css">
</head>

<body>
  <header>
    <a href="https://trello.com"></a>
  </header>

  <section>
    <!-- create input tag for user input -->
    <input type="text" id="task">


    <!-- button takes input and adds a new element with content to 'list_do' -->
    <button id="new-item"> Add a card </button>


    <!-- ability to move items between list_todo and list_doing -->
    <div class="column" id="to-do">
      <h1> To Do </h1>
      <li id="todo-list"></li>
    </div>

    <div class="column" id="doing">
      <h1> Doing </h1>
      <li id="doing-list"></li>
    </div>

  </section>
  <script type="text/javascript" src="https://code.jquery.com/jquery-2.1.1.min.js"></script>
  <script type="text/javascript" src="_js/main.js">
  </script>
</body>

</html>

答案 1 :(得分:0)

由于您稍后将DOM添加到DOM,因此代码$(".addedTask").on('click', "button", function() {将无效,因为在执行时此代码没有.addedTask个元素。

您可能希望将其委托给DOM中的更高节点。一个简单的方法是将其重写为

$("document").on('click', ".addedTask button", function() {