请教个js问题?

thuixy 2015-08-11 04:09:54
<html>
<head>
<title></title>
</head>
<body>
<script type="text/javascript" src="javascripts/jquery.js"></script>
<script type="text/javascript">
$(function () {
$("#ui").on('click', "li", function () {
alert($(this).text());
});


var i=100
while (i-->0) {
document.body.innerHTML += i + "<br>";
}

});
</script>

<ul id='ui'>
<li>one</li>
<li>two</li>
<li>three</li>
</ul>
</body>
</html>

上面的代码运行后,给每个li注册事件不成功,点击列表元素没反应,但是吧红蓝代码交换一下位置,事件就成功触发了,小弟百思不得其解,还请高人指点一二,多谢
...全文
82 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
KK3K2005 2015-08-11
  • 打赏
  • 举报
回复
....能看到 var a =b; 能看到a var a = v; 能看到a 但是 2个a 指向的对象已经不一样了 --------- 一开始$("#ui") 指向了 dom中的一个dom元素 你执行了document.body.innerHTML =。。。。 这个时候 指向的元素 已经被清空了 解析生成了新的元素 只是看起来一样 内存中已经是 2个东西了
thuixy 2015-08-11
  • 打赏
  • 举报
回复
引用 3 楼 KK3K2005 的回复:
document.body.innerHTML += i + "<br>";

也就是

document.body.innerHTML = document.body.innerHTML+i + "<br>";



document.body.innerHTML赋值之后整个dom全部重新解析了 也就是内存中的dom对象已经不是原来的dom对象


那为什么我用chrome浏览器运行能看到呢
KK3K2005 2015-08-11
  • 打赏
  • 举报
回复
document.body.innerHTML += i + "<br>"; 也就是 document.body.innerHTML = document.body.innerHTML+i + "<br>"; document.body.innerHTML赋值之后整个dom全部重新解析了 也就是内存中的dom对象已经不是原来的dom对象
thuixy 2015-08-11
  • 打赏
  • 举报
回复
引用 1 楼 slwsss 的回复:
执行 document.body.innerHTML += 后原来的#ui就不存在了
在的,我试过
slwsss 2015-08-11
  • 打赏
  • 举报
回复
执行 document.body.innerHTML += 后原来的#ui就不存在了

87,904

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧