【发布时间】:2015-05-06 18:46:45
【问题描述】:
我的视图中有一段 ERB 代码,用于获取图像对象数组并创建缩略图网格。我想使用jQuery 的fadeIn 和fadeOut 功能来循环打开和关闭缩略图。我已经查看了如何设置它的其他示例,但我的代码仍然无法正常工作。
数组中的图像数量是动态的,所以我必须动态设置我的标签 ID。这部分代码似乎正在工作。所有图像都设置为
然后我有一个 jQuery 脚本,它应该通过淡入淡出来循环显示图像。据我所知,脚本看起来不错。然而由于某种原因,它在页面呈现时没有执行。我的变量和函数都没有在控制台中定义。也没有错误。
<div class="media-container top gallery-container" style="margin:-12px;height:200px;">
<% c.photos.each_with_index do |m,i| %>
<a href="<%= m.image.url %>">
<div class="gallery-photo" id="photo_<%= "#{c.id}_#{i}" %>" style="z-index:<%= 10+i %>;position:absolute;width:100%;height:100%;background-image: url('<%= m.image.url(:medium) %>');">
</div>
</a>
<% end %>
<br style="clear:both" />
<% length = c.photos.length %>
<% galleryID = c.id %>
<%= javascript_tag do %>
$(document).ready(function(){
var length = '<%= length.to_json.html_safe %>';
var galleryID = '<%= galleryID.to_json.html_safe %>';
var runSlide = function(g, p) {
$('#photo_' + g + '_' + p)
.fadeOut(1500)
.delay(3500)
.fadeIn(1500);
};
for (var i = 0; i < length; i++) {
runSlide(galleryID, i);
}
});
<% end %>
</div>
我的问题是我无法弄清楚为什么脚本没有运行。理想情况下,脚本不会放置在它所在的位置,但它取决于 length 和 galleryID 的值,它们仅在 Ruby 循环的上下文中可用。
【问题讨论】:
-
与答案没有直接关系,但如果您希望脚本存在于 assets/javascripts 中,您可以在模板中添加长度和 galleryID 作为数据属性,并在您的 javascript 中引用它们。例如 div 将有
data-length= "#{c.photos.length}"和data-gallery-id= "#{c.id}" -
我也尝试过这种方法,但页面加载完成后脚本仍未执行。
标签: jquery ruby-on-rails erb