透過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裡
點擊事件 取得
var cid = $this.attr('c_id');
使用$parentNode.on('click',childNode,callback)來綁定事件 原理就是事件冒泡機制
注意三點:
1.事件註冊函數應該在Ajax調用成功後再註冊,可以在ajax的回調函數中調用事件註冊函數,
2.確保你的註冊事件的函數未寫錯,你這兒事件函數寫錯了,直接給click賦值,然後是你的class選擇器,沒發現有元素的class值是你選擇器中的值,如果沒有當然選不到。
3.確保在你點擊事件之前,確保事件已經註冊完成。