我想选择使用ajax动态创建的元素,代码为:
$(function(){
$('#loadFeed').bind('click',function(){
$.getJSON('getData.php', function(json) {
var output="<ul id='feedsList'>";
for(var i=json.posts.length-1;i>=json.posts.length-31;i--){
output+="<li class='post'>";
output+="<div class='text' id='"+json.posts[i].id+"'>"+json.posts[i].shortmsg+"</div>";
output+="</li>";
}
output+="</ul>"
$(output).appendTo('.posts');
});
});
});
html代码:
<div class="posts">
<!--dynamic content here-->
</div>
我尝试使用$(this).attr(“id”)获取id:
$(".post").on("click",".text",function(){
var this_id =$(this).attr("id");
alert(this_id);
});
但它说未定义。我怎样才能正确获取ID?谢谢!
答案 0 :(得分:2)
$(".post")
应为$('div.post')
,因为您正在使用相同的类从ajax请求创建li
。由于div.post
存在于您的DOM中,并且您将列表附加到其中。
即,
$("div.post").on("click","li.post div.text",function(){
var this_id = this.id;
alert(this_id);
});
答案 1 :(得分:2)
数字不是有效的ID。 Ids需要以字母开头。
你需要使用这样的东西:
output+="<div class='text' id='post_"+json.posts[i].id+"'>"+json.posts[i].shortmsg+"</div>";
这里有一个有效身份证的结构:What are valid values for the id attribute in HTML?