javascript - jQuery - 添加的输入不允许我添加文本

标签 javascript jquery

创建输入后,它不允许我添加文本。我正在开发一个项目,该项目允许用户通过单击添加的文本进行更改来编辑他们的文本。

CodePen example

    var $input = $("#change");
var $btn = $("#add");
var $btne = $("#edit");
var $content = $("#content");
$btne.hide();


$btn.click( function(){

 var typedInfo = document.getElementById("change").value;
 var item = $('<li></li>');
 item.append(typedInfo);
 $content.append(item);


 $content.on("click","li", function(){
  });

 item.click( function(){
     $btne.show();
     item.text(" ");
     var typeNew = $('<input type="text" id="newInput" value = "edit">')
     item.append(typeNew);
       $btne.click( function(){
        var editedInput = document.getElementById("newInput").value;
        item.text(editedInput);
        $btne.hide();
   });
 });


});

最佳答案

您可能知道,当您点击一个元素时,点击事件会传播到文档的顶部。

因此,当您单击新输入时,单击会传播到其父级 <li>item.click(function(){...})再次调用,代码再次执行,重建所有当前输入区域。

你必须停止 click事件传播给他的 parent 。

typeNew.click( function(e){
  e.stopPropagation();
});

完整代码

item.click(function(){
  $btne.show();
  item.text(" ");
  var typeNew = $('<input type="text" id="newInput" value = "edit">')
  item.append(typeNew);
  // Click on the new input
  typeNew.click( function(e){
    e.stopPropagation();
  });
  // Click on button
  $btne.click( function(){
    var editedInput = document.getElementById("newInput").value;
    item.text(editedInput);
    $btne.hide();
  });
});

stopPropagation documentation

关于javascript - jQuery - 添加的输入不允许我添加文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40612908/

相关文章:

javascript - 你怎么能允许在一个div中滚动一个div

javascript - 当我尝试附加时 FormData 不起作用

javascript - 具有加载更多功能的时间轴

jquery - 使用 AJAX 提交付款时 PayPal 500 错误 Java 空指针异常错误

javascript - jQuery: live ('focus' ) 和 live ('blur' ) 嵌套在命名空间中,在 1.3.2 中不起作用

javascript - 调用两个同名函数

javascript - 将 jsTree 节点设置为 "Undetermined"状态

jquery - 如何使用Grails文件夹中的jQuery API获取数据?

Javascript 函数交换图像

javascript - 无法删除最后一个前置对象