javascript - 制作基于 slider 的图像集合

标签 javascript jquery css bootstrap-4 slider

我想制作一个基于 slider 的图片集,或者可以说是一个基于 slider 的旋转木马。 我想到的 slider 上面有特定的标记,(比如 1990、1995、2000 等等),并且有一个图像对应于 slider 当前所在的范围(即 1990-1995 的一个图像, 1995-2000 年的另一个,等等)。图像不一定要滑入和滑出视觉。因此,不需要 Bootstrap 旋转木马。

我正在查看的 slider 是 this ,我会根据自己的需要进行修改。

所以,我试图合并这两个概念。 this中显示的两个元素 fiddle 彼此之间没有任何联系。然后我试着mess around with the code , 但旋转木马似乎仍然不受 slider 移动的影响。

这是修改后的代码:

<html>
<head>
    <link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>

    <script type="text/javascript" src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js"></script>

    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css">

   <script src="https://code.jquery.com/jquery-1.12.4.js"></script>
    <script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script> 



      <style>
  #custom-handle {
    width: 3em;
    height: 1.6em;
    top: 50%;
    margin-top: -.8em;
    text-align: center;
    line-height: 1.6em;
  }
  </style>

  <script>
    $( function() {
        var handle = $( "#custom-handle" );
        $( "#slider" ).slider({
        create: function() {
        var slide_number = Number($(this).slider("value"))/34+1 ;
        handle.text( $( this ).slider( "value" ) );
        $("#carouselExampleIndicators").data('slide-to',slide_number) ;
      },
      slide: function( event, ui ) {
        var slide_number = Number(ui.value)/34+1 ;
        handle.text( ui.value );
        $("#corouselExampleIndicators").data('slide-to',slide_number) ;
        }
        });
    } );
    </script>    
</head>
<div id="carouselExampleIndicators" class="carousel slide"  >
  <ol class="carousel-indicators">
    <li data-target="#carouselExampleIndicators" data-slide-to="0" class="active"></li>
    <li data-target="#carouselExampleIndicators" data-slide-to="1"></li>
    <li data-target="#carouselExampleIndicators" data-slide-to="2"></li>
  </ol>
  <div class="carousel-inner">
    <div class="carousel-item active">
      <img class="d-block w-100" src="https://i.imgur.com/S7Hebtq.jpg" alt="First slide">
    </div>
    <div class="carousel-item">
      <img class="d-block w-100" src="http://procutlandscaping.com/blog/wp-content/uploads/2012/06/landscape-design-rockland-county.jpg" alt="Second slide">
    </div>
    <div class="carousel-item">
      <img class="d-block w-100" src="http://4.bp.blogspot.com/-7Tjc6muCHKc/UIToU_6RXeI/AAAAAAAAC4Q/2iE7Cb0m5ZU/s1600/Beautiful+-Landscape-+HD-+Wallpapers3.jpg" alt="Third slide">
    </div>
  </div>
  <a class="carousel-control-prev" href="#carouselExampleIndicators" role="button" data-slide="prev">
    <span class="carousel-control-prev-icon" aria-hidden="true"></span>
    <span class="sr-only">Previous</span>
  </a>
  <a class="carousel-control-next" href="#carouselExampleIndicators" role="button" data-slide="next">
    <span class="carousel-control-next-icon" aria-hidden="true"></span>
    <span class="sr-only">Next</span>
  </a>
    <script>
        $(function(){
          $('#carouselExampleIndicators').carousel();
        });
    </script>
</div>
<div>
     <br><br>
</div>
<div id="slider">
    <div id="custom-handle" class="ui-slider-handle"></div>
</div>
</html>

不工作的主要部分是:

<script>
    $( function() {
        var handle = $( "#custom-handle" );
        $( "#slider" ).slider({
        create: function() {
        var slide_number = Number($(this).slider("value"))/34+1 ;
        handle.text( $( this ).slider( "value" ) );
        $("#carouselExampleIndicators").data('slide-to',slide_number) ;
      },
      slide: function( event, ui ) {
        var slide_number = Number(ui.value)/34+1 ;
        handle.text( ui.value );
        $("#corouselExampleIndicators").data('slide-to',slide_number) ;
        }
        });
    } );
    </script>

我得到的错误是:

TypeError: Actions[t.getLast(...)] is undefined, can't access property "bind" of it

TypeError: $(...).carousel is not a function

旋转木马运行良好,因此我不明白为什么会出现第二个错误。同时,我也不明白第一个错误。

那么,我的问题是,为什么这行不通?

其次,有没有更好的方法来做到这一点?

第三,我可以为此编写更好的代码吗?

感谢任何帮助!


UPD:已更新 fiddle .


UPD:将 $("#corouselExampleIndicators").data('slide-to',slide_number) ; 更改为 $('.corousel') .corousel(slider_number) ;,给定 here .但这仍然不起作用, slider 现在停止工作了。看fiddle here .

试图在代码中使用id而不是class,即使用了$('#corouselExampleIndicators').corousel(1) ;。仍然没有任何效果。


更新:如果有人感兴趣,可以找到最终版本here .这完美无缺。

最佳答案

我看到您包含了许多相互冲突的 jQuery 版本,并导致页面出现错误 Uncaught TypeError: $(...).carousel 不是函数

所以,删除这一行

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>

然后使用脚本

<script src="https://code.jquery.com/jquery-1.12.4.js"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script> 
<script type="text/javascript" src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js"></script>

更新:由于问题更新。

我在您最近更新的 fiddle 中的以下行中发现了另外两个拼写错误:

$('.corousel').corousel(slider_number) ;

它是 carousel 而不是 corousel 而且它是 slide_number 而不是 slider_number。所以,应该是

$('.corousel').carousel(slide_number) ;

注意:该脚本两次包含此错误行。

检查新 fiddle :http://jsfiddle.net/qmeanog1/

关于javascript - 制作基于 slider 的图像集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52576758/

相关文章:

javascript - 给元素添加新样式会报错?

jquery - 当下拉列表选定值更改时隐藏 div

html - CSS 模糊属性仅适用于背景图像

javascript - 如何根据用户输入调整图像大小以防止在网页上溢出

javascript - 如何从 ServiceWorker 流式传输视频?

javascript - 使用 Javascript 从整个网页中删除所有具有特定类的 span 标签

javascript - 如何更改 cleditor 中的图标?

jQuery .on() 单击事件捕获按钮列表中的动态 'data-' 属性以将值传递给其他函数?

javascript - Jquery 事件处理程序仅适用于匿名函数?

css - 使用带有溢出的最小宽度