前提・実現したいこと
※2018/11/13 15:35再追記しました
Webクリエイターの訓練校に通っており、現在下記サイトを参考に作成しております。
RINN inc.
こちらのサイトのようにswiperをドラッグ(スライド)して次の項目を表示させるとそのページが開くようにしたいのです。
(講師に聞いてもできませんでした)
発生している問題・エラーメッセージ
しかし、クリックしないとリンクされたページが出てきません。
###該当のソースコード
<div class="swiper-container"> <div class="swiper-wrapper"> <div class="swiper-slide swiper-slide-active" data-swiper-slide-index="1" data-hash="slide1" data-link="me.html"> <h1 class="page-ttl">M e</h1> </div> <div class="swiper-slide swiper-slide-next" data-swiper-slide-index="0" data-hash="slide2" data-link="Learned.html"> <div class="page-ttl"><a href="Learned.html#slide2">Learned</a></div> </div> <div class="swiper-slide swiper-slide-prev" data-swiper-slide-index="2" data-hash="slide3" data-link="miscellany.html"> <div class="page-ttl"><a href="miscellany.html#slide3">Miscellany</a></div> </div> <div class="swiper-slide swiper-slide-duplicate swiper-slide-duplicate-active" data-swiper-slide-index="1"> <h1 class="page-ttl">Me</h1> </div> <div class="swiper-slide swiper-slide-duplicate swiper-slide-duplicate-next" data-swiper-slide-index="0"> <div class="page-ttl"><a href="Learned.html#slide2">Learned</a></div> </div> <div class="swiper-slide swiper-slide-duplicate swiper-slide-duplicate-prev" data-swiper-slide-index="2"> <div class="page-ttl"><a href="miscellany.html#slide3">Miscellany</a></div> </div> </div> </div>
$(function(){ var swiper = new Swiper('.swiper-container', { loop: true, effect: 'coverflow', grabCursor: true, centeredSlides: true, slidesPerView: 2, loopedSlides:2, sliderMove:true, hashNavigation:true, simulateTouch:true, preventClicks:true, coverflowEffect: { autorotate: 50, stretch: 0, depth: 100, modifier: 1, slideShadows : true, }, }); });
試したこと
hashNavigationを試してみましたがダメでした。
slideChangeにもチャレンジしましたが、swiper.jsは変更箇所が見当たらなかったのと、メソッドではセレクタが思いつかず断念しました。
(ここまでは浮かびました。)
Swiper.on('slideChange', function () { $('ここが謎').load('htmlファイル');
追記です
Swiperの効果は出ますが、スライドができなくなってしまいました。
HTML
<div class="swiper-container"> <div class="swiper-wrapper"> <div class="swiper-slide swiper-slide-active" data-swiper-slide-index="1" data-link="me.html"> <h1 class="page-ttl">M e</h1> </div> <div id="sample" class="swiper-slide swiper-slide-next" data-swiper-slide-index="0" data-hash="slide2" data-link="Learned.html"> <div class="page-ttl"><a href="Learned.html">Learned</a></div> </div> <div class="swiper-slide swiper-slide-prev" data-swiper-slide-index="2" data-link="miscellany.html"> <div class="page-ttl"><a href="miscellany.html">Miscellany</a></div> </div> <div class="swiper-slide swiper-slide-duplicate swiper-slide-duplicate-active" data-swiper-slide-index="1"> <h1 class="page-ttl">M e</h1> </div> <div class="swiper-slide swiper-slide-duplicate swiper-slide-duplicate-next" data-swiper-slide-index="0" data-link="Learned.html"> <div class="page-ttl"><a href="Learned.html">Learned</a></div> </div> <div class="swiper-slide swiper-slide-duplicate swiper-slide-duplicate-prev" data-swiper-slide-index="2" data-link="miscellany.html"> <div class="page-ttl"><a href="miscellany.html">Miscellany</a></div> </div> </div> </div>
JavaScript
$(function(){ var swiper = new Swiper('.swiper-container', { loop: true, effect: 'coverflow', grabCursor: true, centeredSlides: true, slidesPerView: 2, hashNavigation:true, loopedSlides:2, sliderMove:true, simulateTouch:true, preventClicks:true, coverflowEffect: { autorotate: 50, stretch: 0, depth: 100, modifier: 1, slideShadows : true, }, on:{ slideChange:function(){ //現在のスライド要素を取得 var $currentSlide = $(swiper.slides).eq(swiper.realIndex); //対応するファイルのURLを取得 var url = $currentSlide.data('link'); //非同期通信 $.ajax({ // data属性に、ルート直下からのパスを('/me.html'など)を設定しておいてください url:'../html/Learned.html' //ファイル名差し替えてあります }) .promise() .then(function(data){ //非同期通信でデータが取得できた場合の処理 //HTMLとして挿入し、既存のコンテンツ部分を上書きする //セレクタは適宜変更してください $('#sample').html(data); }) } } }) });