Я пытаюсь использовать jQuery в моем приложении rails, чтобы по существу переключаться между двумя частичными нажатиями на кнопку. Желаемое поведение выглядит следующим образом: страница отображается с профилем пользователя и кнопкой "редактировать профиль". Когда нажата кнопка "edit profile" на части профиля, частичная часть удаляется из 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>
У меня проблема в том, что я могу только запустить одну функцию (т.е. загружать страницы, и я могу переключиться на редактирование, но не обратно). Любые рекомендации будут оценены.
В зависимости от версии jQuery вы должны использовать
До 1.7: $('#save').live('click', function(){...})
1.7 и выше: $('#save').on('click', function(){...})
И то же самое для #edit
.
В чем разница между методами bind и live в jQuery?
Вкратце:.bind() применим только к элементам, которые вы сейчас выбрали в вашем объекте jQuery. .live() будет применяться ко всем текущим элементам соответствия, а также к любому, что вы можете добавить в будущем.