我编写了使用 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'>"+json.posts[i].shortmsg+"</div>";
output+="</li>";
}
output+="</ul>"
$(output).appendTo('.posts');
});
});
});
我的html代码:
<div data-role="content" class="ui-content" role="main">
<div class="posts"></div>
</div>
然后我想点击每个帖子,帖子会展开以显示更详细的内容。我该怎么做?我写的代码是:
$(function(){
$('.text').bind('click',function(){
$.getJSON('getData.php', function(json){
var thisID = this.id;
$(this).replaceWith("<div class='long_text'>"+json.posts[thisID].msg+"<div>");
});
});
});
但它没有做任何事情。我不确定是否
var thisID = this.id;
是否有效。我稍微改变了我的代码:
$(function(){
$('.text').bind('click',function(){
alert("Hello!")
});
});
仍然没有任何反应!我怀疑是否在函数中选择了.text。有人可以帮忙吗?谢谢!
最佳答案
您应该阅读有关 jQuery 的 .on()
假设您有一个存在于动态内容之前的容器,
<div class="posts">
<!--dynamic content here-->
</div>
然后,将处理程序一次附加到现有容器,它将监听动态内容的事件
//"add listener for .text, attached on .post"
$('.posts').on('click','.text', function(){
//do stuff when text is clicked
});
关于javascript - ajax注入(inject)的元素无法被选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10647287/