jQuery clone()输入值函数

New*_*Boy 4 javascript jquery

我创建了一个克隆函数来克隆一系列元素.我设法让克隆功能的基础工作正常.点击这里 我在此功能中有一个错误.当用户在输入字段中键入文本时,它会克隆最后输入的文本并更改所有克隆项目的文本值.

$('.add-item').on('click', function() {
  var value = $('input').val();
  if ($('#items-field').val()) {
    $('.list-items p').text(value)
    $('.list-items:first').clone().appendTo("#items").addClass('isVisible');
    $('input').val('');
    event.preventDefault();
  }
})
Run Code Online (Sandbox Code Playgroud)

有谁知道如何解决这个问题?

Shy*_*yju 6

在您之后清除输入的值clone().您可以使用该find()方法获取克隆项目中的所有输入.

var c = $('.list-items:first').clone();
c.find("input").val("");  // find all inputs and clear
c.appendTo("#items").addClass('isVisible');
Run Code Online (Sandbox Code Playgroud)

是一个有效的jsbin样本

此外,在您的代码中,您正在读取输入值并将其设置为所有p标记的文本.您应该只将它设置为克隆div的p标记.

$(function(){

  $('.add-item').on('click', function(e) {
     event.preventDefault();
     var value = $('#items-field').val();
     if (value!="") {

       var c = $('.list-items:first').clone();
       c.find("input").val("");  // find all inputs and clear
       c.appendTo("#items").addClass('isVisible');

       c.find("p").text(value);

     }
  });

}) 
Run Code Online (Sandbox Code Playgroud)

以下是完整解决方案的工作示例