获取动态创建的元素的id

时间:2012-05-18 08:35:45

标签: javascript jquery ajax

我想选择使用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?谢谢!

2 个答案:

答案 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?