使用ajax异步生成界面元素的时候,想给元素绑定一个点击事件,怎么也不生效。
数据渲染
$.ajax({
url: "json/ajax.json",
// 要加上这个async: false,input事件才可以绑定上
async: false,
success: function(data) {
let str = '';
for (let i = 0; i < data.length; i++) {
str += `
<div class="shoplist">
<div class="manjian">${data[i].manjian}</div>
<ul class="shopping">
<input type="checkbox" class="check">
<li>
<img src="${data[i].img}" alt="">
</li>
<li>
<div>
${data[i].miaoshu}
</div>
<span class="price">${data[i].price}</span>
<div class="jiajian">
<span>-</span><span class="number">1</span><span>+</span>
</div>
<a href="#" class="del">
<span class="del_top"></span>
<span class="del_bottom"></span>
</a>
</li>
</ul>
</div>
`
}
$(".all").append(str)
}
})
这样绑定是不会生效的,原因是ajax设置了异步执行,下面的绑定代码应该是在ajax生成界面元素之前就执行了,这样是绑定不上的。解决方法:
把ajax的async属性改为false。这样就能绑定上了