javascript - 如何在foreach中调用函数?

标签 javascript ruby-on-rails photoswipe

我在小图片上添加了一个eventListener,当单击图片时,PhotoSwipe会打开整个图库,但不会提醒打开...

如果我在 js 文件末尾取消注释 //openPhotoSwipe(),则加载页面时会出现 PhotoSwipe 图库,并且 eventListener 按预期工作。但这不是我想要的...... 我是 javascript 新手...非常感谢帮助和解释

 function openPhotoSwipe() {

    var pswpElement = document.querySelectorAll('.pswp')[0];

    var pics =  Array.from(document.getElementsByTagName('img'));

    var items = []

    pics.forEach(function(e){
                    items.push({src: e.src, w: 0, h: 0});
                    })
    var options = {

        history: false,
        focus: false,
        showAnimationDuration: 0,
        hideAnimationDuration: 0,
        closeOnScroll: false,
        closeOnClick: false,

    };

    var gallery = new PhotoSwipe( pswpElement, PhotoSwipeUI_Default, items, options);

    gallery.listen('gettingData', function(index, item) {
      if (item.w < 1 || item.h < 1) {
        var img = new Image(); 
        img.onload = function() {
            item.w = this.width;
            item.h = this.height;
            gallery.invalidateCurrItems();
            gallery.updateSize(true);
        }
        img.src = item.src;
      }
    });

    gallery.init();
};


   var open = Array.from(document.getElementsByClassName("open_gallery"));

open.forEach(function(e){
    e.addEventListener('click', openPhotoSwipe);
})
// openPhotoSwipe();

这是我的部分观点:

   <div class="container">

    <h1><%= @article.title %></h1>
    <p><%= @article.description %></p>

    <div class="thumb_images">
        <% @article.attachments.each do | art| %>

        <%= link_to image_tag art.url, class: "open_gallery" %>

        <% end %>
    </div>

</div>


<div class="pswp" tabindex="-1" role="dialog" aria-hidden="true">

    <div class="pswp__bg"></div>

    <div class="pswp__scroll-wrap">


        <div class="pswp__container">
            <% @article.attachments.each do | art| %>
                <div class="pswp__item">
                    <%= image_tag art.url %>
                </div>
            <% end %>
        </div>


        <div class="pswp__ui pswp__ui--hidden">

            <div class="pswp__top-bar">

                <div class="pswp__counter"></div>

                <button class="pswp__button pswp__button--close" title="Close (Esc)"></button>

                <button class="pswp__button pswp__button--share" title="Share"></button>

                <button class="pswp__button pswp__button--fs" title="Toggle fullscreen"></button>

                <button class="pswp__button pswp__button--zoom" title="Zoom in/out"></button>

                <div class="pswp__preloader">
                    <div class="pswp__preloader__icn">
                        <div class="pswp__preloader__cut">
                        <div class="pswp__preloader__donut">
                        </div>
                    </div>
                    </div>
                </div>

            </div>

            <div class="pswp__share-modal pswp__share-modal--hidden pswp__single-tap">
                <div class="pswp__share-tooltip">
                </div> 
            </div>

            <button class="pswp__button pswp__button--arrow--left" title="Previous (arrow left)">
            </button>

            <button class="pswp__button pswp__button--arrow--right" title="Next (arrow right)">
            </button>

            <div class="pswp__caption">
                <div class="pswp__caption__center">
                </div>
            </div>

        </div>

    </div>

</div>

最佳答案

正如您在comment中确认的那样我的猜测是正确的,您的 link_to 基本上没有创建所需的 HTML 标记。所以我在这里输入 comment作为答案。将方法链接写如下:

<%= link_to "#", class: "open_gallery" do %>
  <%= image_tag art.url %>
<%end%>

关于javascript - 如何在foreach中调用函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52192844/

相关文章:

javascript - AngularJS动态过滤器配置无法解决

ruby-on-rails - 如何在 Rails 中创建动态 CSS?

javascript - Photoswipe 图库关闭后如何控制焦点?

javascript - Mongoose 不使用模型 save() 强制执行类型

javascript - jQuery - 选择输入字段的关联标签元素

css - Rails 7 不会在 `generate scaffold` 命令上生成 SCSS 文件

angularjs - 如何在 View 加载后获得触发指令?

javascript - PhotoSwipe 在新窗口中打开照片

JavaScript insertAt 位置

ruby-on-rails - 如何使用 Ruby 中的 Google Sheets Api 格式化 dd/mm/yyyy 中的多个日期类型列?