2013-11-02 47 views
2

我遇到了问题。在DOM中添加新元素后,该元素无法识别旧脚本和本文档中的相同功能,如何解决这个问题呢?如何重新加载脚本在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!'); 
}); 

回答

5

当您使用.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 

但是,如果你想使用点击与委托功能的immutation:

var myFn=function(e){ 
if(e.target.id=='apended'){ 
     alert('click'); 
    } 

} 

$(document).click(myFn) 

演示:http://jsfiddle.net/abdennour/7cyjV/