Javascript jquery脚本在使用.html()后不起作用
当我使用.html放置数据时,jQuery脚本无法处理新数据。 代码如下所示: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>
<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
}
我已经回答了一个类似的问题。可能会对正在发生的事情/如何避免它有所帮助:谢谢,我会看一看:我已经回答了一个类似的问题。可能会对正在发生的事情/如何避免它有所帮助:谢谢,我会看一看:谢谢,这正是我想要的:谢谢,这正是我想要的: