【问题标题】:How to add a function to an appended element如何将函数添加到附加元素
【发布时间】:2018-09-12 05:59:12
【问题描述】:

我有一个输入文本。如果您输入内容,文本会出现在下方(参见代码 sn-p)。

现在,我需要对上一步执行相同的操作:单击按钮(最好是复选框)以追加/删除所有内容。这是我失败的想法:DEMO(它附加了输入文本,但是当您键入时,文本不会像我的代码 sn-p 那样出现在下面)。

我觉得下面添加文字的功能不起作用,因为选择附加元素时出现问题。我该怎么做?

如果有更简单的想法来做到这一点,那就太好了

var name1 = document.getElementById('name');

name1.addEventListener('input', function() {
  var result = document.querySelector('.X');
  
  console.log(this.value );
  result.innerHTML = this.value;
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<label>What is your name? </label><input type="text" id="name">

<p>Your name is: <span class="X"></span></p>

【问题讨论】:

  • 你可以了解一下here,基本上是同一个问题

标签: javascript jquery function append


【解决方案1】:

在单击添加按钮时将 sn-p 的第一部分放入附加逻辑中。与您的代码一样,输入框在附加其侦听器后附加到文档中。

if (!added) {
  $content =  $(NewContent).appendTo('.firstappend');
 
  // attach listener after input box actually exists!
  var name1 = document.getElementById('A');
  name1.addEventListener('input', function() {
    var result = document.querySelector('span.Y');
    console.log(this.value );
    result.innerHTML = this.value;
  });
}

【讨论】:

    【解决方案2】:

    $(function() {
      let NewContent = '<div class="added">' +
        '<p>' +
        '<label>What is your name? </label>' +
        '<input type="text" id="A">' +
        '</p>' +
        '<p>Your name is: <span class="Y"></span></p>' +
        '</div>';
      $(".addremove").on('click', function() {
        if ($(".added").length) {
          $(".added").remove();
        } else {
          $(".firstappend").append(NewContent);
    
        }
      });
    
      $(document).on('change keyup', '#A', function(event) {
        $("span.Y").html($(event.currentTarget).val());
      });
    });
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <div class="toadd">
      <button type="button" class="addremove">Do you have a name?</button>
    </div>
    
    <div class="firstappend"></div>

    从您包含的演示中, 附加到文档的元素不能被显式调用,因为你使用的是 jQuery,你可以这样做

    $(document).on('change keyup', '#A', function(event) {
      $("span.Y").html($(event.currentTarget).val());
    });
    

    【讨论】:

    • 谢谢,但我从你的代码 sn-p 中注意到,如果你只输入一个字母,它不会出现,直到你输入下一个。例如,如果您键入“Robert”,它只会显示“Rober”
    猜你喜欢
    • 2020-12-19
    • 1970-01-01
    • 1970-01-01
    • 2019-05-24
    • 1970-01-01
    • 1970-01-01
    • 2010-12-06
    • 2012-08-30
    • 2017-03-25
    相关资源
    最近更新 更多