javascript - 使用 jQuery 删除这个单击的列表元素

标签 javascript jquery

我非常感谢您的帮助。我希望在单击时删除使用“#save”按钮创建的列表项。注释的方法不起作用。如果我输入“h1”或其他内容,它就没有问题。此外,“#delBtn”按钮可以毫无问题地删除所有列表项。但当我单击要删除的列表项时,我无法使其工作。感谢您提前抽出时间。

function Contact(first, last) {
  this.firstName = first;
  this.lastName = last;
}


$(document).ready(function() {
  let a_contacts = [];

    $("#delBtn").click(function(){
      $("li").remove();
    });

    $("#save").click(function(){
      event.preventDefault()

      var inputtedFirstName = $("input#new-first-name").val();
      var inputtedLastName = $("input#new-last-name").val();
      var newContact = new Contact(inputtedFirstName, inputtedLastName);
      $("ul#contacts").append("<li class='contact'>" +'First Name: '+ newContact.firstName + ' Last Name: '+ newContact.lastName + "</li>");

      a_contacts.push(newContact);

      $("input#new-first-name").val("");
      $("input#new-last-name").val("");
    });


        //---------------------------------------------------------------



      // $("li").click(function() { 
      //   $(this).remove();
      //  });


      //   $('li').click(function(e){
      //     $(e.target).remove();
      // });


});


<!DOCTYPE html>
<html>
  <head>
    <link href="CSS/bootstrap.css" rel="stylesheet" type="text/css">
    <link href="CSS/style.css" rel="stylesheet" type="text/css">
    <script src="JS/jquery-3.2.1.js"></script>
    <script src="JS/myjava.js"></script>
    <title>Address book</title>
  </head>
  <body>
    <div class="container">
      <h1 id="haha" >Address book</h1>

      <div class="row">
        <div class="col-md-6">
          <h2>Add a contact:</h2>

          <form id="new-contact"><!-- form -->
            <div class="form-group">
              <label for="new-first-name">First name</label>
              <input type="text" class="form-control" id="new-first-name">
            </div>
            <div class="form-group">
              <label for="new-last-name">Last name</label>
              <input type="text" class="form-control" id="new-last-name">
            </div>

            <button id="delBtn" class="btn">Add</button>
            <button id="save"  class="btn">Save</button>
          </form><!-- form -->

          <h2>Contacts:</h2>
          <ul id="contacts">

          </ul>
        </div>
        <div class="col-md-6">
          <div id="show-contact">
            <h2></h2>

            <p>First name: <span class="first-name"></span></p>
            <p>Last name: <span class="last-name"></span></p>
          </div>
        </div>
      </div>
    </div>
  </body>
</html>

最佳答案

尝试委托(delegate)事件监听器。我相信,由于这些元素是动态创建的,事件监听器不会在页面加载时找到它们并附加它们。尝试做这样的事情:

`$(document).on('click', 'li', function () {
     $(this).remove();
 })`

发生的事情是文档在页面加载时获取事件监听器,并在创建后将点击效果传递给所有 li。

关于javascript - 使用 jQuery 删除这个单击的列表元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48471995/

相关文章:

javascript - 如何使 $(this) 从插件的函数参数内部访问

php - 使用 Javascript 检查 PHP session

javascript - 仅使用访问 token 在 Node 中获取 google+ 用户配置文件

javascript - 正则表达式匹配可能以也可能不以 "The," "A"或 "An"开头的字符串

javascript - document.querySelectorAll(变量类)

javascript - .toLocaleString() 不在带小数的数字上显示逗号

javascript - 如何使用 ES6 箭头函数从 jQuery on() 事件中获取元素?

javascript - 如何从 JavaScript 中动态创建的元素获取文本

jquery mobile 如何切换选择的显示

javascript - 在图片url中添加字符串