所以我有一个看似
的评论列表...
<li class="buried">
<div>
<a class="show">show this comment</a>
</div>
</li>
<li>
<div>
bla blah..
</div>
</li>
....
javascript:
$(".buried").click(function(){
$.ajax({
...
success: function(data){
alert(data);
// here I want to replace the li.buried with data
}
});
return false;
});
我该怎么做?
我尝试使用$(this).parents(".buried").replace(data)
并且无效:(
答案 0 :(得分:4)
将AJAX调用的context
参数设置为this
:
$(".buried").click(function(){
$.ajax({
url:'some/url',
context: this,
success: function(data){
alert(data);
$(this).replaceWith( data );
}
});
return false;
});
由于click
处理程序在<li>
上,在处理程序中,this
将引用收到该事件的<li>
。
我认为返回的data
是另一个<li>
,因为这是唯一有效的替代品。如果您确实想要替换其内容,请执行$(this).html( data )
。
请注意,如果您执行替换<li>
本身,您将失去该项目的click
处理程序。如果您不想丢失,可以将click
指定为delegate
本身<ul>
。