2011-01-20 104 views
0

所以我的意见的列表,看起来内部列表项类似jQuery的 - 从一个元素与另一个替换第一个列表项

... 
<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)和它不工作:(

回答

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处理该项目。如果您不想失去它,您可能需要在<ul>本身上将click指定为delegate

+0

非常感谢。我不知道代表。我通常在ajax更新后再次执行所有功能:) – Alex 2011-01-20 00:44:27

相关问题