2

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

4

2 回答 2

2

$(".post")应该是$('div.post'),因为您是li从具有相同类的 ajax 请求创建的。正如div.post你的 DOM 中存在的那样,你正在将你的列表附加到它上面。

那是,

$("div.post").on("click","li.post div.text",function(){
      var this_id = this.id;
      alert(this_id);
});
于 2012-05-18T08:43:57.553 回答
2

数字不是有效的 ID。ID 需要以字母开头。

您将需要使用这样的东西:

output+="<div class='text' id='post_"+json.posts[i].id+"'>"+json.posts[i].shortmsg+"</div>";

以下是有效 id 的结构:HTML 中 id 属性的有效值是什么?

于 2012-05-18T08:51:33.993 回答