Javascript函数没有在rails 3.2中获取

时间:2012-04-21 10:35:56

标签: jquery ruby-on-rails-3 ruby-on-rails-3.1

我在资产管道文件夹的javascript文件中有以下功能,我已经在application.js文件的需求中将这个文件设置在加载顺序中的所有其他库下面。该文件正确加载到浏览器中。

由于某种原因它不起作用,所以目前我将它添加到erb文件中并且它可以正常工作,但我想知道如何在资产管道中使用它。

我是否错误地宣布它?

 $(function(){

      var $container = $('#container');

      $container.isotope({
        itemSelector: '.element'
      });

    });

这是观点:

<div id="container" class="super-list width2 height2  clearfix">

    <% @feature.issues.each do |issue| %>
    <div class="element metalloid isotope-item   " data-symbol="Mg" data-category="alkaline-earth">
    <p class="number">  <%= issue.id %> </p>
  <h2 class="symbol"> <%= link_to issue.title, [@feature, issue] %> </h2>

  </div>
  <% end %>

</div>

1 个答案:

答案 0 :(得分:3)

根据那些注释,你需要做的是将这个代码放在$(function() {})块中,而不是将它放在一个事件块中,用于触发加载的任何内容。看看pjax文档,我认为有一个非常明确的答案。

https://github.com/defunkt/jquery-pjax

它声明:“pjax会在你要求它将你的反应主体加载到。pjax:startpjax:end”的容器上触发两个事件。

所以我认为如果你将div与end事件绑定在一起并传递你的函数,那么它应该可行。如果没有,您可能想发布您的观看代码。

修改

我觉得你很亲密。根据您添加的代码,on标志应附加到您的pjax绑定到元素的位置。鉴于您发布的第一行是:

$('a.pjax').pjax() 

我想你可以尝试以下方法:

$('a.pjax').pjax().on('pjax:end', function(){ 
  var $container = $('#container'); 
  $container.isotope({ itemSelector: '.element' }); 
});