我的RubyonRails应用程序中的jquery动画和替换函数

我的RubyonRails应用程序中的jquery动画和替换函数,jquery,ruby-on-rails,jquery-animate,Jquery,Ruby On Rails,Jquery Animate,在我的“review”div(高度185像素)中,我有一个链接“Edit”,单击该链接时,div将变为250像素,链接将变为“Cancel”,单击返回185像素,依此类推 这段代码(在js.erb文件中)对我来说非常有用(“编辑”链接更改为“取消”): $('#review').html(“”) $('#review'')。动画({height:'250px'},300); 我的#review div平滑地扩展到250像素。现在我正试图将相同的效果恢复到185像素。但是高度突然收缩-没有平滑的

在我的“review”div(高度185像素)中,我有一个链接“Edit”,单击该链接时,div将变为250像素,链接将变为“Cancel”,单击返回185像素,依此类推

这段代码(在js.erb文件中)对我来说非常有用(“编辑”链接更改为“取消”):

$('#review').html(“”)
$('#review'')。动画({height:'250px'},300);
我的#review div平滑地扩展到250像素。现在我正试图将相同的效果恢复到185像素。但是高度突然收缩-没有平滑的过渡:

$('#review_<%=@review.id%>').replaceWith("<%= escape_javascript( review_block @review ) %>")
$('#review_<%=@review.id %>').animate({height:'185px'}, 300);
$('#review')。替换为(“”)
$('#review'')。动画({height:'185px'},300);

有没有办法让我的动画流畅?我试着用“html”代替“replaceWith”,但它使我的div的内容失去了位置。谢谢。

发生此问题的原因是,调用replaceWith时,您正在丢失jQuery设置高度的元素。举例来说,假设您拥有以下DOM:

<div id="page">
  <div id="review">
    <img src="review.gif"/>
    <input type="text"></input>
  </div>
</div>
调用
$('#review')。替换为(“”)删除该元素及其关联的样式:

<div id="page">
  <div id="review2">
  </div>
</div>
您可以将
review\u block@review
更改为仅返回(同样,我的示例)以下内容:

    <img src="review.gif"/>
    <input type="text"></input>


然后,您可以使用jQuery
html
功能,而不是
replaceWith
,您应该保持您的风格,而不是打乱您的定位。

感谢您的全面回复。我现在正在处理,我会让你知道。。。。
<div id="page">
  <div id="review2">
  </div>
</div>
  <div id="review">
    <img src="review.gif"/>
    <input type="text"></input>
  </div>
    <img src="review.gif"/>
    <input type="text"></input>