jQuery - 从第一个列表项中的元素替换另一个列表项

时间:2011-01-20 00:30:28

标签: jquery html jquery-selectors

所以我有一个看似

的评论列表
...
<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)并且无效:(

1 个答案:

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