bootstrap *slide.bs.carousel* 事件未在 vue js 中触发
Posted
技术标签:
【中文标题】bootstrap *slide.bs.carousel* 事件未在 vue js 中触发【英文标题】:bootstrap *slide.bs.carousel* event is not firing in 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" >
</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 【参考方案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 组件的挂载部分
【讨论】:
以上是关于bootstrap *slide.bs.carousel* 事件未在 vue js 中触发的主要内容,如果未能解决你的问题,请参考以下文章
学习 Bootstrap 5 之 Bootstrap 和 Breakpoints
Bootstrap 5 仍然推荐使用 Bootstrap-vue?
bootstrap-flex、bootstrap-grid 和 bootstrap-reboot 的区别