jquery click里的for循环,点击两次数据才会出现在页面上
点击一次的效果
点击两次的效果
$('#printAll').on('click', function(e){
let printData=data1
var div = $("#printAllList");
for(var i=0;i<printData.length;i++){
console.log(123,printData[i])
var printSingel="<div id='printPageAll'>"
+"<div id='printPage' class='print"+i+"'>"
+"<div id='bcTarget' class='targetList"+i+"'></div>"
+"</div>"
+"</div>"
$(".targetList" + i).text(printData[i].sku);
e.preventDefault();
div.append(printSingel)
}
});
第一遍console.log就能打印出来数据,但是页面没能展示
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
$(".targetList" + i) 这玩意点第一遍的时候不存在啊,点第二遍的时候可以是因为第一遍添加上了
你这串代码的问题有点多哦
1.for循环添加多个元素,虽然在当前情况这个i可以不要,不过可能后续还有功能,建议var换成let
2.var printSingel放在了循环体里面,意味着每次都是新的变量,建议放循环体外部
3.每次循环都append,意味着资源消耗极大,建议循环体里面只做元素的拼接,循环结束后一次性append
4.$(".targetList" + i).text(printData[i].sku);也没有必要在循环体内找到元素又去修改text,直接把printData[i].sku拼接在对应字符串节点上就行了,一是为了效率,二是没有append的情况下根本找不到指定元素
5.click事件是可以多次执行的,建议添加节流
6.循环体内添加e.preventDefault()只会影响性能