0

我在资产管道文件夹中的 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>
4

1 回答 1

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' }); 
});
于 2012-04-21T11:23:55.413 回答