我在资产管道文件夹的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>
答案 0 :(得分:3)
根据那些注释,你需要做的是将这个代码放在$(function() {})
块中,而不是将它放在一个事件块中,用于触发加载的任何内容。看看pjax文档,我认为有一个非常明确的答案。
https://github.com/defunkt/jquery-pjax
它声明:“pjax会在你要求它将你的反应主体加载到。pjax:start
和pjax:end
”的容器上触发两个事件。
所以我认为如果你将div与end事件绑定在一起并传递你的函数,那么它应该可行。如果没有,您可能想发布您的观看代码。
修改强>
我觉得你很亲密。根据您添加的代码,on标志应附加到您的pjax绑定到元素的位置。鉴于您发布的第一行是:
$('a.pjax').pjax()
我想你可以尝试以下方法:
$('a.pjax').pjax().on('pjax:end', function(){
var $container = $('#container');
$container.isotope({ itemSelector: '.element' });
});