Luminous.jsという画像拡大軽量スクリプトを使ってコンテンツ部分画像を拡大をさせていますが
スクロールでのappendで追加した要素に対してイベント発火しません。
スクロールで追加しない要素に対してはイベント発火します。
画面の遷移後の最初の1ぺーじ目など。。
appendする要素はgem'kaminari'を使ったページネーションでの1ページごとを追加させています。
フェイスブックやツイッターなどのタイムラインをスクロールしたら一定件数読み込むような処理を実装させたいです。
appendで追加した要素にはjsイベントが発火しないのはわかるのですが実際のコードがわかりませんよろしくお願いします。
gem'kaminari'
Luminous.js
infinite-scroll.js
を使用しています。
殴り書きで文章もまとまっていませんが回答いただければ幸いです。よろしくお願いします。
9/25追加
下記の部分を追加しましたところappendした要素に対してもイベント発火するようになりましたが
apenndする前の同じ要素にイベントが重複してしまいます。スクロールするたびにイベントが重なるようになりました。
参考記事
https://glitter-style.jp/labo/web-resource/coexist-photoswipe-and-infinite-scroll/
https://haayaaa.hatenablog.com/entry/2019/03/12/204522
- if post.images.attached? - post.images.each_with_index do |image,i| %div{class: "wrap#{i}"} %a#luminous{href: "#{url_for(image)}"} = image_tag image,class:"post_image#{i}" _____________拡大部分の記述___________________________________________ - unless @posts.include?(@posts_last) .page-load-status .infinite-scroll-request = image_tag src="/assets/loading-1.gif",style:"width:60px;height:30px;" = paginate @posts :javascript var luminousTrigger = document.querySelectorAll('#luminous') if( luminousTrigger !== null ) { new LuminousGallery(luminousTrigger); } $(function() { $('#menus').infiniteScroll({// 監視してほしい範囲のタグのクラス path : 'nav.pagination a[rel=next]', // 次ページのリンク(kaminari使ってる) append : '.root_page__right__contents__list', // 読まれたら追加していくタグのクラス history: false, // ページが読まれてもURLを変えない prefill: true, // 一番下まで読まれる前にpathを読み込む status: '.page-load-status' // 読み込み中表示したいタグのクラス }) })
:javascript var luminousTrigger = document.querySelectorAll('#luminous') if( luminousTrigger !== null ) { new LuminousGallery(luminousTrigger); } ___________________________________________________________________________ $('#menus').on( 'append.infiniteScroll', function() { var luminousTrigger = document.querySelectorAll('#luminous') if( luminousTrigger !== null ) { new LuminousGallery(luminousTrigger); } }); //この部分を追加 ___________________________________________________________________________ $(function() { $('#menus').infiniteScroll({// 監視してほしい範囲のタグのクラス path : 'nav.pagination a[rel=next]', // 次ページのリンク(kaminari使ってる) append : '.root_page__right__contents__list', // 読まれたら追加していくタグのクラス history: false, // ページが読まれてもURLを変えない prefill: true, // 一番下まで読まれる前にpathを読み込む status: '.page-load-status' // 読み込み中表示したいタグのクラス }) })
あなたの回答
tips
プレビュー