网站首页 > 基础教程 正文
大家一定遇到过在for循环中创建html元素,并且绑定事件的情况,
实际的效果,发现最后一个元素的事件将会覆盖前面所有元素的事件,如下面的代码:
for (int i = 0; i < 10; i++) {
var p=$("<p></p>");
p.html(i);
var url="http://localhost/p?id="+i;
p.click(function(){
window.open(url);
});
$("body").append(p);
}
以上代码,目测看没有什么问题,但是实际情况是,所有的p元素的click事件都是相同了,最后一次的事件覆盖了前面所有的事件,
url都变成了最后一次的,这应该是jquery的一个bug
那应该如何解决呢?
我稍作调整,改成以下的就可以了
for (int i = 0; i < 10; i++) {
var p=$("<p></p>");
p.html(i);
var url="http://localhost/p?id="+i;
p.attr("url",url);
p.click(function(){
window.open($(this).attr("url"));//此处不能直接写url
});
$("body").append(p);
}
这样,每个p标签的事件都是独立的了。
网上看了听说可以使用数组的方法解决,希望有更优雅的解决方法,希望大家评论区讨论贡献
- 上一篇: Java学习路线总结
- 下一篇: javaScript数组的遍历操作
猜你喜欢
- 2024-11-24 前端移动开发基础HTML5丶CSS3+零基础Web前端开发工程师高端培训
- 2024-11-24 前端JQuery异步加载文件机制
- 2024-11-24 深圳嘉华学校:什么是JQuery?
- 2024-11-24 jQuery文档抄录
- 2024-11-24 jquery是干什么的--乐字节前端
- 2024-11-24 如何使用 JavaScript 或 jQuery 获取元素的所有属性
- 2024-11-24 jQuery是什么?如何使用?
- 2024-11-24 GO语言全栈大纲
- 2024-11-24 jquery1.9以上版本.toggle()的替代实现方法
- 2024-11-24 jQuery3.6.0发布,存在JSONP错误也返回JSON
- 最近发表
- 标签列表
-
- gitpush (61)
- pythonif (68)
- location.href (57)
- tail-f (57)
- pythonifelse (59)
- deletesql (62)
- c++模板 (62)
- css3动画 (57)
- c#event (59)
- linuxgzip (68)
- 字符串连接 (73)
- nginx配置文件详解 (61)
- html标签 (69)
- c++初始化列表 (64)
- exec命令 (59)
- canvasfilltext (58)
- mysqlinnodbmyisam区别 (63)
- arraylistadd (66)
- node教程 (59)
- console.table (62)
- c++time_t (58)
- phpcookie (58)
- mysqldatesub函数 (63)
- window10java环境变量设置 (66)
- c++虚函数和纯虚函数的区别 (66)