2014-02-22 78 views
0

我想在我的rails应用程序中使用jQuery,以实质上在点击一个按钮之间切换两个partials。所需的行为如下所示:页面使用用户的配置文件和“编辑配置文件”按钮进行渲染。当单击Profile profile上的'编辑配置文件'按钮时,将从DOM中删除部分,并呈现编辑配置文件部分。当点击编辑配置文件部分的'保存'按钮时,该操作应该反转并再次显示用户的配置文件。我是新来的jQuery,但随着计算器我到达下面的脚本帮助:使用jQuery切换rails partials

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

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

回答

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()将适用于所有当前的匹配元素,以及将来可能添加的任何元素。

+0

感谢您的回应,但它似乎.live()被删除在jQuery 1.9(http://api.jquery.com/live/)和.on()给我与我原来的代码相同的行为 - 第一个切换工作,但我不能切换回来。 – jprince

+0

@jprince我不确定你在做什么,但看看这里,也许它会帮助http://railscasts.com/episodes/205-unobtrusive-javascript –