j渲染视图后Javascript不起作用

Posted

技术标签:

【中文标题】j渲染视图后Javascript不起作用【英文标题】:Javascript does not work after j rendering a view 【发布时间】:2017-02-27 20:53:24 【问题描述】:

当我使用远程调用和 *js.erb 文件将内容动态更新到页面时,如下所示:

add_content.js.erb

$("#new_content").html('<%= j render("content") %>');

要呈现这样的视图: _content.html.erb

<div class="name">
    <%= @content.name %>
</div>
<div class="text">
    <%= @content.text %>
</div>

使用这样的 javasript 文件: application.js

$( document ).ready(function() 
    ...
    $(".name").on('click', function()
      $(".text").slideToggle();
    );
    ...
)

... javascript slideToggle() 未执行。当我这样做时

<%= render("content") %> 

在任何视图(没有 js.erb)中,一切都按预期工作,并且 slideToggle() 工作。 这只是一个简单的示例,它与 slideToggle 无关,甚至 alert("...") 等都不起作用。

所以我的问题是为什么没有执行 javascript?这与任何装载顺序有关吗?我需要重新初始化一些东西吗?

【问题讨论】:

【参考方案1】:

你试过了吗

$( document ).ready(function() 
    //your code here;
)

【讨论】:

是的,这就是它的样子。感谢您的回答,我更新了我的问题。【参考方案2】:

如果将新 HTML 注入页面,请在将新 HTML 放入页面后选择元素并附加事件处理程序。或者,使用委托事件附加事件处理程序,更多详细信息请参考此 api 文档,http://api.jquery.com/on/

在您的 application.js 中尝试这样 ....

$('#new_content').on('click', '.name', function() 
  $(".text").slideToggle();
);

希望这对你有用........谢谢!

【讨论】:

以上是关于j渲染视图后Javascript不起作用的主要内容,如果未能解决你的问题,请参考以下文章

使用布局渲染 gsp / 视图不起作用

Cakephp 3:Json 渲染视图不起作用

(重新)在更改事件处理程序中渲染主干视图不起作用

Xcode 8.3.2 游乐场实时视图渲染不起作用

UITableViewCell 背景渐变在第一次渲染时不起作用

回发后jquery datepicker不起作用