在 DOM 中添加新元素后,该元素无法识别旧脚本
Posted
技术标签:
【中文标题】在 DOM 中添加新元素后,该元素无法识别旧脚本【英文标题】:After adding a new element in the DOM, the element does not recognize old script 【发布时间】:2013-11-13 14:00:50 【问题描述】:我有一个问题。在DOM中添加一个新元素后,该元素无法识别旧脚本和本文档中的相同功能,如何解决这个问题?如何重新加载脚本
<!DOCTYPE html>
<html>
<head>
<title>test</title>
</head>
<body>
<div id='content'>Content.....</div>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js" ></script>
<script src='js/script.js' type='text/javascript'></script>
</body>
</html>
// script.js //
$('#content').click(function()
$('body').append('<div id="apended">Click me!</div>');
);
$('#apended').click(function()
alert('click!');
);
【问题讨论】:
【参考方案1】:当您使用.on('click', function (e) )
函数时,它仅适用于现有元素。要处理所有选择器元素上的点击事件,即使对于将来要添加的元素,您也可以使用以下函数之一:
$(document).on('click', "#appended", function (e)
// some code code
alert('click!');
);
或:
$("body").delegate("#appended", "click", function ()
// your code goes here
alert('click!');
);
有关更多信息,请阅读有关Understanding Event Delegation的文章
【讨论】:
【参考方案2】:你可以使用代替点击功能:
1.live(old version)
2.delegate
3.on
但是,如果你想使用点击与委托功能的不变性:
var myFn=function(e)
if(e.target.id=='apended')
alert('click');
$(document).click(myFn)
演示:http://jsfiddle.net/abdennour/7cyjV/
【讨论】:
以上是关于在 DOM 中添加新元素后,该元素无法识别旧脚本的主要内容,如果未能解决你的问题,请参考以下文章