Bootstrap Carousel 删除项目和指标问题
Posted
技术标签:
【中文标题】Bootstrap Carousel 删除项目和指标问题【英文标题】:Bootstrap Carousel removing items and indicators problem 【发布时间】:2020-07-13 15:02:19 【问题描述】:我有一个引导轮播,其中包含 10 个左右带有指示器的项目。指示器也是可点击的,并且可以在点击时滚动到每个项目,例如data-slide-to="1" 属性应用于元素。轮播按预期工作,没有任何问题。
我现在需要在某些情况下删除项目。当我尝试从轮播中删除当前未激活的项目时,我的 javascript 运行并且我的轮播仍然可以正常工作。
但是,如果我要删除的项目当前处于活动状态,则这是在删除项目和指示器后轮播停止工作的时候。我知道总是需要一个“活动”项目,这就是为什么我调用 carousel.('next') 如果活动项目是要删除的项目。
请有人指出我下一步需要做什么来解决这个问题的正确方向。 (此外,当我删除一个项目时,我的指示器应该会自动删除)。
任何帮助将不胜感激。
$('#Container').children().each(function (index, item)
var id = item.id;
if (!eventData.evList.some(ev => ev.ev_no == id))
var carElement = $('.carousel').find('#' + id);
if ($(carElement).hasClass('active'))
$('.carousel').carousel('next');
carElement.remove();
$('#' + id + 'ind').remove();
$('#evIndicators').children().each(function (index, item)
$(item).attr('data-slide-to', index);
);
);
<div id="carouselIndicators" class="carousel slide pointer-event">
<ol id="evIndicators" class="carousel-indicators" style="margin-top: -50px; height: 50px; float: left;">
<li id="2245ind" data-target="#carouselIndicators" data-slide-to="0" class="active">22</li>
<li id="2315ind" data-target="#carouselIndicators" data-slide-to="1">23</li>
<li id="2345ind" data-target="#carouselIndicators" data-slide-to="2">24</li>
</ol>
<div id="Container" class="carousel-inner">
<div id="2245" class="carousel-item active">
<a id="22451" class="btn-link" href="#" onclick="showAddDialog(22451,8,1)">
<div class="runnerNum">1</div>
</a>
</div>
<div id="2315" class="carousel-item">
<a id="23151" class="btn-link" href="#" onclick="showAddDialog(23151,9,1)">
<div class="runnerNum">1</div>
</a>
</div>
<div id="2345" class="carousel-item">
<a id="23451" class="btn-link" href="#" onclick="showAddDialog(23451,10,1)">
<div class="runnerNum">1</div>
</a>
</div>
</div>
</div>
);
22:45 23:15 23:45 1 1 1【问题讨论】:
【参考方案1】:看起来您可能必须等到我启动的幻灯片必须完成,然后才能实际删除/移除幻灯片面板和指示器。我通过执行以下操作修复了它。
创建removeId全局变量,并将轮播元素(carElement)设置为全局变量。
$('#Container').children().each(function (index, item)
var id = item.id;
if (!event.evList.some(ev => ev.race_no == id))
removeId = id;
carElement = $('.carousel').find('#' + id);
if ($(carElement).hasClass('active'))
$('.carousel').carousel('next');
);
然后使用每次幻灯片完成时运行的轮播“滑动”事件并检查是否有需要删除的候选轮播元素...然后删除元素和指示器。
$('.carousel').on('slid.bs.carousel', function ()
if (carElement)
carElement.remove();
$('#' + removeId + 'ind').remove();
$('#evIndicators').children().each(function (index, item)
$(item).attr('data-slide-to', index);
);
carElement = null;
removeId = null;
);
现在我不知道这是否是解决此问题的最佳方法,因为它看起来有点乱。我很乐意有人帮助改进我的代码。谢谢。
【讨论】:
以上是关于Bootstrap Carousel 删除项目和指标问题的主要内容,如果未能解决你的问题,请参考以下文章
如何删除或改进:Bootstrap Carousel 上的焦点样式?
Carousel Bootstrap 5:从 JQuery 到 Javascript
Bootstrap Carousel li 项目活动类不工作
Django Bootstrap Carousel 一次 4 个项目