2014-02-22 108 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 –