我正在尝试使用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
答案 0 :(得分:0)
内容强>
您提到您的链接/内容将在Ajax更新后消失
问题与这一行有关:
$('#page_view').html('<%= escape_javascript (render :partial => 'edit') %>')
您的链接将属于#page_view
元素,这意味着当您更新其HTML时,您也会删除链接/其他内容。要解决此问题,您需要在您需要的特定容器上发出.html
命令
<强>链接强>
您的链接无效,因为Javascript无法绑定到DOM加载中不存在的元素
你通常会有这样的事情:
$(".element").on("event", function() {
//Your stuff here
});
这里的问题是因为在您的Ajax调用之前文档中不存在.element
,它不会被绑定,从而阻止您的事件触发操作。要解决这个问题,您需要从DOM加载时出现的元素delegate,如下所示:
$(document).on("event", ".element", function() {
//Your Code
});