Переключение паролей с использованием jQuery

0

Я пытаюсь использовать 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>

У меня проблема в том, что я могу только запустить одну функцию (т.е. загружать страницы, и я могу переключиться на редактирование, но не обратно). Любые рекомендации будут оценены.

Теги:
ruby-on-rails-3
partials

1 ответ

0

В зависимости от версии jQuery вы должны использовать

До 1.7: $('#save').live('click', function(){...})

1.7 и выше: $('#save').on('click', function(){...})

И то же самое для #edit.

В чем разница между методами bind и live в jQuery?

Вкратце:.bind() применим только к элементам, которые вы сейчас выбрали в вашем объекте jQuery. .live() будет применяться ко всем текущим элементам соответствия, а также к любому, что вы можете добавить в будущем.

  • 0
    Спасибо за ответ, но кажется, что .live () был удален в jQuery 1.9 ( api.jquery.com/live ), а .on () дает мне то же поведение, что и мой исходный код - первый переключатель работает, но я могу ' т назад.
  • 0
    @jprince Я не уверен, что вы делаете, но посмотрите здесь, может быть, это поможет railscasts.com/episodes/205-unobtrusive-javascript

Ещё вопросы

Сообщество Overcoder
Наверх
Меню