Coffeescript在ruby对象上嵌套迭代

时间:2013-03-22 15:25:30

标签: javascript ruby-on-rails coffeescript

我有一个包含多种产品的产品页面。单击某个产品时,会弹出一个灯箱,其中包含该产品和相关产品列表。当您将鼠标悬停在相关产品列表上时,其图像的不透明度应该会发生变化。我用这个脚本的第一个产品工作:

 $(document).ready ->
   z = $(".related_products_image")
   z.each ->
     relid = $(this).data("imageid")      
     hover = $("#related_" + relid) 
     hover.mouseenter ->
      $(this).css("opacity", 1.0)
     hover.mouseleave ->
      $(this).css("opacity", 0.4)

但它只适用于第一个产品。我相信因为我在页面上有很多相关产品列表,而我没有迭代它,所以它只是选择第一个。

我的html / erb看起来像这样:

<div id="product_popup_<%= product.id %>">
        <div class="related-products">
          <ul class="related_products_list" id="related_products_list_<%= product.id %>" data-listid="<%= product.id %>">
         <% @related_products.each do |related_product| %>
         <li class="related_products_item"><%= link_to large_image(related_product, :itemprop => "image", :data => {:imageid => related_product.id}, :id => "related_" + related_product.id.to_s, :class => "related_products_image"), url_for(related_product) %></li>
         <% end %>
    </ul>

所以我尝试创建一个如下所示的嵌套迭代:

$(document).ready ->
 i = $(".related_products_list")
 i.each ->
  listid = $(this).data('listid')
  list = $("#related_products_list_" + listid + " li" + " img") 
  list.each ->
    z = $(".related_products_image")
    relid = $(this).data("imageid")      
    hover = $("#related_" + relid) 
    hover.mouseenter ->
      $(this).css("opacity", 1.0)
    hover.mouseleave ->
      $(this).css("opacity", 0.4)

**编辑:以上代码适用于第一个产品ligutbox,但对页面上的其他产品再没有任何作用。

0 个答案:

没有答案