使用jQuery切换rails部分

时间:2014-02-22 05:05:41

标签: javascript jquery ruby-on-rails ruby-on-rails-3 partials

我正在尝试在我的rails应用程序中使用jQuery,在点击按钮时基本上在两个部分之间切换。所需的行为如下:页面呈现用户的个人资料和“编辑个人资料”按钮。当单击配置文件部分上的“编辑配置文件”按钮时,将从DOM中删除部分,并呈现编辑配置文件部分。单击编辑配置文件部分上的“保存”按钮时,操作应反转并再次显示用户的配置文件。我是jQuery的新手,但在stackoverflow的帮助下,我得到了以下脚本:

<script language="javascript" type="text/javascript">
  jQuery(
    function editProfile($) {
      $('#edit').click(function() {
        $("#edit-profile").html('<%= escape_javascript(render :partial => "shared/edit_profile").html_safe %>');
        $("#show-profile").empty();
      });
    }
  );

  jQuery(
    function showProfile($) {
      $('#save').click(function() {
        $("#show-profile").html('<%= escape_javascript(render :partial => "shared/show_profile").html_safe %>');
        $("#edit-profile").empty();
      });
    }
  );
</script>

我的html.erb如下:

<div id="show-profile">
  <%= render :partial => "shared/show_profile" %>
</div>
<div id="edit-profile"></div>

我遇到的问题是我似乎只能运行一个功能(即页面加载,我可以切换到编辑,但不能回来)。任何指导都将不胜感激。

1 个答案:

答案 0 :(得分:0)

根据jQuery的版本,你应该使用

1.7之前: $('#save').live('click', function(){...})

1.7及以上: $('#save').on('click', function(){...})

同样适用于#edit

What is the difference between the bind and live methods in jQuery?

  

简而言之:.bind()仅适用于您当前在jQuery对象中选择的项目。 .live()将适用于所有当前匹配的元素,以及将来可能添加的任何元素。