Javascript jquery脚本在使用.html()后不起作用

Javascript jquery脚本在使用.html()后不起作用,javascript,jquery,html,Javascript,Jquery,Html,当我使用.html放置数据时,jQuery脚本无法处理新数据。 代码如下所示: <html> <head> <script> $(document).ready(function(){ $("#newhtml").on("click", function(){ alert("I'm the NEW one!"); }); $("#put_new").on("click", function(){ $("#

当我使用.html放置数据时,jQuery脚本无法处理新数据。 代码如下所示:

<html>
<head>
<script>
$(document).ready(function(){
    $("#newhtml").on("click", function(){
        alert("I'm the NEW one!");
    });
    $("#put_new").on("click", function(){
        $("#newdiv").html("<input type = 'button' id = 'newhtml' value = 'click on me'/>");
    });
});
</script>
</head>
<body>
<div id="newdiv"></div>
<input type="button" id="put_new" value="put new html" />
</body>
</html>
这是一个简单的例子,但是我想输入更多的数据,我希望新元素以这种方式与脚本一起工作。 我试图在stackoverflow.com上搜索,但没有找到任何合适的。
非常感谢。

这是因为在执行当前的.on语句时,元素newhtml不存在

将事件绑定更改为:

$(document).on('click', '#newhtml', function(){
    alert("I'm the NEW one!");
});

您调用的主要元素必须在调用时存在。在第二个参数中,您可以为绑定时可能不存在的元素指定选择器。

这是因为在执行当前.on语句时,元素newhtml不存在

将事件绑定更改为:

$(document).on('click', '#newhtml', function(){
    alert("I'm the NEW one!");
});
您调用的主要元素必须在调用时存在。在第二个参数中,您可以为绑定时可能不存在的元素指定选择器。

使用此选项:-

原因是,对于这种稍后将元素添加到DOM中的功能,您需要使用委托事件处理程序,而不仅仅是绑定

事件处理程序仅绑定到当前选定的元素;在代码调用时,它们必须存在于页面上

委派事件的优点是,它们可以处理来自子元素的事件,这些子元素将在以后添加到文档中。通过选择在附加委派事件处理程序时保证存在的元素,可以使用委派事件来避免频繁附加和删除事件处理程序。例如,该元素可以是模型-视图-控制器设计中视图的容器元素,如果事件处理程序希望监视文档中的所有冒泡事件,则可以是文档。文档元素在加载任何其他HTML之前都在文档的头部可用,因此可以安全地在那里附加事件,而无需等待文档准备就绪

使用此选项:-

原因是,对于这种稍后将元素添加到DOM中的功能,您需要使用委托事件处理程序,而不仅仅是绑定

事件处理程序仅绑定到当前选定的元素;在代码调用时,它们必须存在于页面上

委派事件的优点是,它们可以处理来自子元素的事件,这些子元素将在以后添加到文档中。通过选择在附加委派事件处理程序时保证存在的元素,可以使用委派事件来避免频繁附加和删除事件处理程序。例如,该元素可以是模型-视图-控制器设计中视图的容器元素,如果事件处理程序希望监视文档中的所有冒泡事件,则可以是文档。文档元素在加载任何其他HTML之前都在文档的头部可用,因此可以安全地在那里附加事件,而无需等待文档准备就绪


新html上的事件将不起作用,因为在将节点添加到DOM之前附加了事件,因此为了使其起作用,需要在调用html方法后实现事件

 $(document).ready(function(){
    $("#put_new").on("click", function(){
      $("#newdiv").html("<input type = 'button' id = 'newhtml' value = 'click on me'/>");
      $("#newhtml").on("click", function(){
           alert("I'm the NEW one!");
       });
   });
});

新html上的事件将不起作用,因为在将节点添加到DOM之前附加了事件,因此为了使其起作用,需要在调用html方法后实现事件

 $(document).ready(function(){
    $("#put_new").on("click", function(){
      $("#newdiv").html("<input type = 'button' id = 'newhtml' value = 'click on me'/>");
      $("#newhtml").on("click", function(){
           alert("I'm the NEW one!");
       });
   });
});

试试这样的

var f00 = "doStuff()";

$("#newdiv").html('<input type="button" id="newhtml" value="click on me" onclick="' + f00 + '"/>');

function doStuff() {
    //stuff
}

试试这样的

var f00 = "doStuff()";

$("#newdiv").html('<input type="button" id="newhtml" value="click on me" onclick="' + f00 + '"/>');

function doStuff() {
    //stuff
}

我已经回答了一个类似的问题。可能会对正在发生的事情/如何避免它有所帮助:谢谢,我会看一看:我已经回答了一个类似的问题。可能会对正在发生的事情/如何避免它有所帮助:谢谢,我会看一看:谢谢,这正是我想要的:谢谢,这正是我想要的: