【问题标题】:update active element for auto slide bootstrap carousels更新自动滑动引导轮播的活动元素
【发布时间】:2018-04-12 09:33:09
【问题描述】:

我有 3 个引导轮播(只有一个可见,具体取决于您单击此处的内容):

所有这些都以相同的方式工作。如果我单击另一张幻灯片,则会激活该幻灯片(添加选定的类)。它看起来像这样:

但是当它自动滑到另一张幻灯片时,这张幻灯片没有显示为已激活(未添加选择的类),我不知道为什么它不工作。

关于此页面的问题:https://bm-translations.de/km.php#video

我的代码:

// handles the carousel buttons
$('[id^=carousel-selector-]').click( function(){
  var id_selector = $(this).attr("id");
  var id = id_selector.substr(id_selector.length -1);
  id = parseInt(id);
  $('.carousel').carousel(id);
  $('[id^=carousel-selector-]').removeClass('selected');
  $(this).addClass('selected');
});

// when the carousel slides, auto update
$('.carousel').on('slide.bs.carousel', function (e) {
  var id = $('.item.active').data('slide-number');
  id = parseInt(id)+1;
  $('[id^=carousel-selector-]').removeClass('selected');
  $('[id=carousel-selector-'+id+']').addClass('selected');
});

在自动滑动时,它不会添加所选的类,而是在单击时添加。我的代码有什么问题?

【问题讨论】:

  • 问题不清楚,请在 3 个单独的段落中解释你在做什么,预期的行为是什么,出了什么问题,这打破了所有人都可以理解的问题。
  • @MunimMunna 我编辑了这个问题,希望它更清楚。

标签: javascript jquery carousel bootstrap-carousel


【解决方案1】:

自动轮播功能的问题似乎是您的“id”不正确,因为抓取它的选择器没有针对正确的元素。

您需要定位当前的“选定”项目。现在,因为这里没有检索到您的“id”:
var id = $('.item.active').data('slide-number');

理想情况下,您的“选定”类应该在您的<li> 中,因此您可以轻松获取索引,但如果您想以现在的方式获取正确的 id,您可以像这样获取索引:

var id = $("#carouselMarketing1 a.selected").parent().index();

var id = $("#carouselMarketing1 a.selected").parent().attr("data-slide-to")

编辑:

再看一遍后,我发现您的问题是与尝试检索具有多个轮播的 id 有关,感谢您对此的评论。

这对我有用:

id = $(a.currentTarget).find('.item.active').index()

基本上,您只是获取当前所选轮播下活动项目的 ID。

【讨论】:

  • 我用var id = $("a.selected").parent().index(); 试过了,但它不能正常工作。我不能使用 ID,因为我有 3 个具有 3 个不同 ID 的不同轮播。
  • 不确定您所说的“我不能使用 id”是什么意思,您能进一步解释一下吗
  • 我有 3 个轮播。根据您单击的内容(参见有问题的第一张图片)“在线营销”、“设计”或“Webentwicklung”,会出现另一个具有特定 ID 的轮播。所以我不能定位#carouselMarketing1,因为我也有#carouselDesign1#carouselWebentwicklung1。它们都是自动滑动的,当然应该更改活动项目。
  • 哦,这就是你的意思,不用担心,你可以笼统地定位它,让我编辑回复
【解决方案2】:

您正在使用 on 绑定 slide.bs.carousel,但这不是 jQuery 事件。您必须改用bind

$('.carousel').bind('slide.bs.carousel', function(e){
    var $this = $(this), index = $this.find('.item.active').index();
    var $sliderButtons = $this.find('[data-slide-to] a');
    $sliderButtons.eq(index).removeClass('selected');
    $sliderButtons.eq( index+1 < $sliderButtons.length ? index+1 : 0).addClass('selected');
});

【讨论】:

  • 我已经更新了文件,但没有任何变化。看看网站。
猜你喜欢
  • 2021-05-14
  • 2018-12-10
  • 2021-10-04
  • 1970-01-01
  • 2020-07-29
  • 1970-01-01
相关资源
最近更新 更多