【问题标题】:bootstrap *slide.bs.carousel* event is not firing in vue jsbootstrap *slide.bs.carousel* 事件未在 vue js 中触发
【发布时间】:2019-05-24 11:20:25
【问题描述】:
<div id="appFeatureimg" class="carousel slide">
    <div class="carousel-inner row w-100 mx-auto">
        <div class="carousel-item col-md-3 col-sm-3 col-3"  :class= "{active: index==0 }" v-for="(screenshot,index) in app_details.screenshots">
            <div class="panel panel-default">
               <div class="panel-thumbnail">
                     <a href="#" class="thumb">
                          <img class="img-fluid mx-auto d-block" :src="screenshot"alt="slide 1" >
                     </a>
               </div>
           </div>
       </div>
   </div>
   <a class="carousel-control-prev" href="#appFeatureimg" 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 text-faded" href="#appFeatureimg" role="button" data-slide="next">
      <span class="carousel-control-next-icon" aria-hidden="true"></span>
      <span class="sr-only">Next</span>
   </a>
</div>

这是我生成轮播项目的 html

 <script>
            vue js code goes here
 </script>

及其他js代码

<script src="//cdnjs.cloudflare.com/ajax/libs/popper.js/1.13.0/umd/popper.min.js"></script>
<script src="//maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js"></script>
<script>
    $( document ).ready(() => {
        console.log('ready');
        $('#appFeatureimg').on('slide.bs.carousel', (e) => {
            console.log('ready2');
            var $e = $(e.relatedTarget);
            var idx = $e.index();
            var itemsPerSlide = 4;
            var totalItems = $('.carousel-item').length;

            if (idx >= totalItems-(itemsPerSlide-1)) {
                var it = itemsPerSlide - (totalItems - idx);
                for (var i=0; i<it; i++) {
                    // append slides to end
                    if (e.direction=="left") {
                        $('.carousel-item').eq(i).appendTo('.carousel-inner');
                    }
                    else {
                        $('.carousel-item').eq(0).appendTo('.carousel-inner');
                    }
                }
            }
        });
    });
</script>

这是我用于轮播的 jQuery。

document.ready 函数后,我得到控制台打印,但引导事件 slide.bs.carousel 没有触发。 我将这些代码放在我的 vue js 和其他脚本之前,但没有结果。 任何建议都会非常明显。

【问题讨论】:

  • 您问题中的源代码格式已损坏。请重新格式化。所以我可以理解和帮助
  • 我格式化了@PreciousOkwu

标签: javascript jquery twitter-bootstrap vue.js carousel


【解决方案1】:

移动一下

$( document ).ready(() => {
        console.log('ready');
        $('#appFeatureimg').on('slide.bs.carousel', (e) => {
            console.log('ready2');
            var $e = $(e.relatedTarget);
            var idx = $e.index();
            var itemsPerSlide = 4;
            var totalItems = $('.carousel-item').length;

            if (idx >= totalItems-(itemsPerSlide-1)) {
                var it = itemsPerSlide - (totalItems - idx);
                for (var i=0; i<it; i++) {
                    // append slides to end
                    if (e.direction=="left") {
                        $('.carousel-item').eq(i).appendTo('.carousel-inner');
                    }
                    else {
                        $('.carousel-item').eq(0).appendTo('.carousel-inner');
                    }
                }
            }
        });

到 vue js 组件的挂载部分

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-05-19
    • 2022-10-16
    • 2016-08-30
    • 2015-05-28
    • 2014-04-25
    • 2018-07-19
    • 2017-12-20
    • 2022-06-28
    相关资源
    最近更新 更多