javascript 为什么通过动态添加的元素没有点击事件?

<!DOCTYPEhtml><htmllang="zh-CN"><head><scriptsrc="js/jquery-2.1.1.min.js"></script><t... <!DOCTYPE html>
<html lang="zh-CN">
<head>
<script src="js/jquery-2.1.1.min.js"></script>
<title>Usage Of Bootstrap</title>
<style type="text/css">
#container{
width: 200px;
height: 200px;
margin: 200px auto;
border: 1px solid red;
}
</style>
</head>
<body>
<div id="container"></div>
</body>
</html>

<script>
$(function(){

//点击container时动态添加 id="children" 的子元素
$("#container").one("click", function(){
$(this).append("<div id='children' style='border: 1px solid blue;'>children content</div>");
})

//为什么点击children 没有弹出内容 ???
$("#children").click(function(){
alert("I'm children");
})
})
</script>
展开
 我来答
网海1书生
科技发烧友

2016-08-02 · 擅长软件设计、WEB应用开发、小程序
网海1书生
采纳数:12311 获赞数:26228

向TA提问 私信TA
展开全部
那是因为当程序第一次执行到
$("#children").click(function(){
alert("I'm children");
})
这里时,$("#children")这个对象并不存在,程序就会判定为出错,那个这个事件代码就无效了。
你应该在动态生成元素的同时也动态生成事件过程,而不是先生成一个子虚乌有的事件来等着元素对号入座。
匿名用户
2016-08-02
展开全部

jquery中绑定事件一般使用bind,或者click,但是这只能是对已经加载好的元素定义事件,那些后来添加插入的元素则需要另行绑定。


jquery 1.7版以后使用on动态绑定事件

$("#children").click(function(){
    alert("I'm children");
})
改成
$("#children").on("click","#children", function() {
    alert("I'm children");
})
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2016-08-02
展开全部
点击事件要放里面添加,像这样
$(function(){

//点击container时动态添加 id="children" 的子元素
$("#container").one("click", function(){
$(this).append("<div id='children' style='border: 1px solid blue;'>children content</div>");
//为什么点击children 没有弹出内容 ???
$("#children").click(function(){
alert("I'm children");
})
})})
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式