ссылка ajax скрывается при нажатии

Я пытаюсь использовать ajax для загрузки формы на мою страницу, которая частично работает. Проблема, с которой я столкнулся, заключается в том, что при нажатии на ссылку содержимое загружается, но ссылки исчезают, а также при загрузке содержимого ни один из javascript в этой области содержимого не работает.

Боковая панель со ссылками

- content_for :sidenav do
  - @pages.each do |obj|
    %li= link_to(obj.name, edit_admin_page_path(obj), :remote => true)

Ajax для частичного рендеринга

$('#page_view').html('<%= escape_javascript (render :partial => 'edit') %>')

Частично нужно отобразить

= simple_form_for(@page, :url => admin_page_path(@page), :method => :put, :html => { :class => 'form-vertical' }) do |form|
  = render form

person Boss Nass    schedule 08.02.2014    source источник


Ответы (1)


Контент

Вы упомянули, что ваши ссылки/контент исчезнут после обновления Ajax

Проблема будет связана с этой строкой:

$('#page_view').html('<%= escape_javascript (render :partial => 'edit') %>')

Ваши ссылки будут попадать в элемент #page_view, то есть, когда вы обновляете его HTML, вы также удаляете ссылки/другой контент. Чтобы исправить это, вам нужно выполнить команду .html на конкретном контейнере, который вам нужен.


Ссылки

Ваши ссылки не будут работать, потому что Javascript не может привязываться к элементам, отсутствующим при загрузке DOM.

Обычно у вас будет что-то вроде этого:

$(".element").on("event", function() {
    //Your stuff here
});

Проблема здесь в том, что .element не будет существовать в вашем документе до вашего вызова Ajax, он не будет привязан и, следовательно, не позволит вашим событиям запускать действия. Чтобы обойти это, вам нужно делегировать элемент, который будет присутствовать при загрузке DOM. , как это:

$(document).on("event", ".element", function() { 
    //Your Code
});
person Richard Peck    schedule 08.02.2014
comment
ура @rich, в форме, которую я отображаю, я использую вкладки Foundations, будет ли эта проблема с DOM все еще присутствовать в этом? - person Boss Nass; 08.02.2014
comment
Хм, я раньше не пользовался материалами Foundations - у вас есть ссылка? - person Richard Peck; 08.02.2014
comment
Это похоже на элемент JS! Мой код все еще действителен :) У вас будут элементы DIV, которые вы заменяете и т. д. Эти элементы должны быть связаны с JS, что может произойти только с делегированием. - person Richard Peck; 08.02.2014