单击时隐藏了ajax链接

时间:2014-02-08 06:44:28

标签: jquery ruby-on-rails ajax partial-views

我正在尝试使用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

1 个答案:

答案 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
});