【问题标题】:Set active slide in modal click on Swiper slider在模式中设置活动幻灯片单击 Swiper 滑块
【发布时间】:2017-06-15 18:02:26
【问题描述】:

我有一个表格,其中有一个按钮,可以打开一个模态窗口,在模态窗口内有一个 Swiper 滑块,显示一些文本/幻灯片

我需要做的是当有人点击一个按钮时,在模式上它应该自动在 Swiper 上加载相关的幻灯片。

例如,当我单击 SET 1 时,它应该显示幻灯片 1,当我单击 SET 2 时,它应该加载第二个滑块并选择正确的分页。

下面是我的代码

JS

var swiper = new Swiper('.swiper-container', {
        pagination: '.swiper-pagination',
        paginationClickable: true,
        spaceBetween: 30,
    });
    

HTML

<table>
<tr>
  <td>Set 1</td>
  <td><a data-toggle="modal" href="#myModal" class="btn btn-primary btn-lg">View</a></td>
</tr>
<tr>
  <td>Set 2</td>
  <td><a data-toggle="modal" href="#myModal" class="btn btn-primary btn-lg">View</a></td>
</tr>
<tr>
  <td>Set 3</td>
  <td><a data-toggle="modal" href="#myModal" class="btn btn-primary btn-lg">View</a></td>
</tr>
<tr>
  <td>Set 4</td>
  <td><a data-toggle="modal" href="#myModal" class="btn btn-primary btn-lg">View</a></td>
</tr>
</table>

  <!-- Modal -->
  <div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
    <div class="modal-dialog">
      <div class="modal-content panel-warning">
        <div class="modal-header panel-heading">
          <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
          <h4 class="modal-title">Modal title</h4>
        </div>
        <div class="modal-body">
         
        <div class="swiper-container">
        <div class="swiper-wrapper">
            <div class="swiper-slide">Slide 1</div>
            <div class="swiper-slide">Slide 2</div>
            <div class="swiper-slide">Slide 3</div>
            <div class="swiper-slide">Slide 4</div>
           
        </div>
        <!-- Add Pagination -->
        <div class="swiper-pagination"></div>
</div>
        </div>
        
      </div><!-- /.modal-content -->
    </div><!-- /.modal-dialog -->
  </div><!-- /.modal -->

小提琴 https://jsfiddle.net/livewirerules/fu8mezk3/7/

任何帮助将不胜感激

【问题讨论】:

    标签: javascript jquery twitter-bootstrap swiper


    【解决方案1】:

    HTML:

    <table>
    <tr>
      <td>Set 1</td>
      <td><a data-toggle="modal" href="#myModal" data-slider="0" class="btn btn-primary btn-lg">View</a></td>
    </tr>
    <tr>
      <td>Set 2</td>
      <td><a data-toggle="modal" href="#myModal" data-slider="1" class="btn btn-primary btn-lg">View</a></td>
    </tr>
    <tr>
      <td>Set 3</td>
      <td><a data-toggle="modal" href="#myModal" data-slider="2" class="btn btn-primary btn-lg">View</a></td>
    </tr>
    <tr>
      <td>Set 4</td>
      <td><a data-toggle="modal" href="#myModal" data-slider="3" class="btn btn-primary btn-lg">View</a></td>
    </tr>
    </table>
    
      <!-- Modal -->
      <div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
        <div class="modal-dialog">
          <div class="modal-content panel-warning">
            <div class="modal-header panel-heading">
              <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
              <h4 class="modal-title">Modal title</h4>
            </div>
            <div class="modal-body">
    
            <div class="swiper-container">
            <div class="swiper-wrapper">
                <div class="swiper-slide">Slide 1</div>
                <div class="swiper-slide">Slide 2</div>
                <div class="swiper-slide">Slide 3</div>
                <div class="swiper-slide">Slide 4</div>
    
            </div>
            <!-- Add Pagination -->
            <div class="swiper-pagination"></div>
    </div>
            </div>
    
          </div><!-- /.modal-content -->
        </div><!-- /.modal-dialog -->
      </div><!-- /.modal -->
    

    JS:

    $( document ).ready(function() {
     var swiper = new Swiper('.swiper-container', {
            pagination: '.swiper-pagination',
            paginationClickable: true,
            spaceBetween: 30,
        });
    
    
        $('#myModal').on('shown.bs.modal', function(e) {
         swiper.update();
        var $invoker = $(e.relatedTarget);
          swiper.slideTo($invoker.data('slider'));
          swiper.update();
        });
    
        });
    

    这应该可以完成工作。 !!

    【讨论】:

    • 谢谢....它有效...但是有一个小问题。当我第一次单击按钮时,它会显示第一张幻灯片,之后它可以正常工作。当我单击第一个按钮时,它会突出显示不正确的分页项目符号。你可以在这里检查小提琴jsfiddle.net/livewirerules/fu8mezk3/9
    • 我稍微更新了 js。试试看……现在应该没问题了。顺便说一句,你的小提琴没有data-slider
    • 完美...非常感谢..还有一件事,当我单击一个按钮,然后单击另一个按钮时,它会显示前一个按钮,然后移动到正确的一个.. 例如:当我单击时第一个按钮,然后单击第三个按钮,它显示第一张幻灯片,然后移动到第三张。是否可以直接显示第三张幻灯片而不显示上一张?
    • 尝试将模型事件从 shown.bs.modal 更改为 show.bs.modal
    • 嗯...如果我们禁用幻灯片动画,我猜你会看到你想要的效果。
    猜你喜欢
    • 2020-03-03
    • 1970-01-01
    • 2021-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多