【问题标题】:jQuery add same class to same element index in two different containersjQuery将相同的类添加到两个不同容器中的相同元素索引
【发布时间】:2013-11-07 20:47:39
【问题描述】:

我正在使用一个没有内置缩略图导航的轮播 jquery 插件,所以我正在尝试构建一个穷人的版本。

我正在使用 Owl Carousel 插件。

因此,对于这种情况,我需要发生的是,如果主轮播中的幻灯片 div 有一个 .active 类,那么我需要在第二个轮播中有一个 div,它具有相同的索引,以获得一个活跃的班级。

主轮播代码:

    <div id="slide1">
        <div class="owl-wrapper-outer">
            <div class="owl-wrapper">
               <div class="owl-item"></div>
               <div class="owl-item active"></div>
               <div class="owl-item"></div>
            </div>
        </div>
    </div>

然后这是我用作导航的轮播:

<div id="slide2">
   <div class="owl-wrapper-outer">
       <div class="owl-wrapper">
           <div class="owl-item"></div>
           <div class="owl-item"></div>  <!-- this should automatically get .active added -->
           <div class="owl-item"></div>
       </div>
   </div>
</div>

我不确定如何获取两个元素的索引,然后将 class active 添加到 #slide2 以便它们匹配。

好的,这里有一个更新,感谢 Michael Schmuki 提供的代码。我将此代码添加到幻灯片移动时已在使用的函数中。它可以工作。但是,在我的#slide1 幻灯片中,它一次显示两张幻灯片。好消息是这两张幻灯片都自动添加了活动类,但是当我在这段代码中添加时,#slide2 中只有一个缩略图获得了活动类。它没有同时拾取两个活动幻灯片是否有原因?

这是我正在使用的函数的一部分:

function animateIn(carousel){
  var carousel = $('#slide1');
  var nthChildActive = $(this).find(".active").index() + 1;
  $('#slide2 .owl-item .slide.active').removeClass('active');
  $("#slide2 .owl-wrapper .owl-item:nth-child("+nthChildActive+")").addClass("active");
}

这是在猫头鹰旋转木马中设置的地方

carousel.owlCarousel({
  items: 2,
   pagination:false,
   stopOnHover:true,
   afterMove: function() {
     animateIn();
      }
    });

【问题讨论】:

  • 向我们展示您的 Javascript 代码。
  • jquery.each() 使元素索引成为它的第一个回调参数。您可以使用它来导航 #slide2 中的元素,方法是使用 $('#slide2 .owl-item').eq(index);

标签: javascript jquery html indexing carousel


【解决方案1】:

您可以像这样检测和标记(多个)活动元素:

//detect & mark
$("#slide1 .owl-item").each(function(index) {
  if($(this).hasClass("active"))
    $("#slide2 .owl-item:nth-child("+(index+1)+")").addClass("active");
});

您可以在http://jsbin.com/oHOyEZi/7/edit?js,output 上使用新示例

但我对 Owl Carousel 不熟悉,所以你必须自己弄清楚如何指定,当轮播实际滑动时会触发此逻辑。

【讨论】:

  • 所以对于 owl carousel,我可以在标记为 afterMove 的内容中添加一个函数。我将在编辑中将代码添加到我的原始帖子中。如果您对此有任何指示,那也将不胜感激!
  • 所以我使用了你的代码并且它确实有效,但它是否有理由只从#slide1 中选择一个具有活动类的 div?我编辑了我的原始帖子并提到一次显示 2 张幻灯片,并且都从 #slide1 设置了 .active 类。
  • 我刚刚编辑了我的片段以检测多个具有“活动”类的元素。看看jsbin.com/oHOyEZi/7/edit?js,output 是的,afterMove 似乎是合法的
  • 我将您的标记为正确,因为它回答了最初的问题,但如果您对我的后续工作有任何想法,将不胜感激!谢谢!
  • 谢谢,但您的后续行动是什么?请注意,我编辑了我的原始答案和 sn-p..
猜你喜欢
  • 2023-04-08
  • 2017-01-12
  • 2021-11-25
  • 2021-02-13
  • 2017-08-08
  • 2018-03-10
  • 2020-12-06
  • 2018-01-15
相关资源
最近更新 更多