通过ajax,在ul加载了全部数据,添加了ul li 单击事件,可是触发不了,如果是ul事件的话能触发。
ajax
/*省市*/
$("#proNum").click(function(){
$.ajax({type:"post",
url:"region/jsonRegion",
dataType:"json",
success:function(data){
$("#gj_disProvince").toggleClass("active");
var listr ="";
for(var i = 0; i < data.length; i++){
listr +="<li class='com-li gj_dispro' proNum='"+data[i].id+"'>"+data[i].placename+"</li>";
}
$("#assessPro").html(listr); //添加全部城市
}
});
});
实现图
标签
<p class="conselect mr-7" id="gj_disProvince">
<input class="inputype" readonly="readonly"placeholder="省份"
id="proNum" proNum="0">
<p class="p-r">
<p class="down-box">
<ul class="com-ul com-ul-288" id="assessPro">
</ul>
</p>
</p>
</p>
事件
/*选择一个省 ,li[class='com-li gj_dispro'] 触发不了*/
$("ul[class='com-ul com-ul-288']").click(function(){
alert(1);
// 不明白为什么 ul 能触发,li就不行,
//请教一下如何获取到选择中li的省市和id
});
雷雷
因为ajax事件是异步执行的,你点击的时候,并没有li这个don结构
循环时把id存在li的attr里
<li c_id="" >
点击事件 获取
var cid = $this.attr('c_id');
使用$parentNode.on('click',childNode,callback)来绑定事件 原理就是事件冒泡机制
注意三点:
1.事件注册函数应该在Ajax调用成功后再注册,可以在ajax的回调函数中调用事件注册函数,
2.确保你的注册事件的函数未写错,你这儿事件函数写错了,直接给click赋值,然后是你的class选择器,没发现有元素的class值是你选择器中的值,如果没有当然选不到。
3.确保在你点击事件之前,确保事件已经注册完成。