Методы jQuery не работают внутри Owl Carousel - PullRequest
0 голосов
/ 26 ноября 2018

У меня есть сова-карусель с различными вращающимися ящиками.

Когда я нажимаю на кнопку внутри ящика, я хочу переключить класс на div внутри этого же ящика.

Этоработает нормально, пока я не заверну его в карусель сов и инициализирую его.После этого метод toggleClass (и, похоже, любой другой метод) перестает работать.

$(document).ready(function() {

  $('.view-offer').click(function() {

    var linkID = $(this).data('id')
    var el = '#box-' + linkID
    $(el).toggleClass('test');

    console.log(el);

  });

  $(".offers-slider").owlCarousel({
    nav: false,
    autoPlay: false,
    navText: [
      "<i class='fa fa-angle-left'></i>",
      "<i class='fa fa-angle-right'></i>"
    ],
    loop: true,
    dots: false,
    items: 3
  });

});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/OwlCarousel2/2.3.4/owl.carousel.min.js"></script>
<link href="https://cdnjs.cloudflare.com/ajax/libs/OwlCarousel2/2.3.4/assets/owl.carousel.min.css" rel="stylesheet" />
<div class="owl-carousel owl-theme offers-slider">

  <div class="item">
    <a href="#!" class="view-offer" data-id="1">View</a>
    <div id="box-1">
      Box 1
    </div>
  </div>

  <div class="item">
    <a href="#!" class="view-offer" data-id="2">View</a>
    <div id="box-2">
      Box 2
    </div>
  </div>

  <div class="item">
    <a href="#!" class="view-offer" data-id="3">View</a>
    <div id="box-3">
      Box 3
    </div>
  </div>

</div>

linkID будет нормально регистрироваться в консоли, но класс не будет добавляться к элементу.Нет ошибок вообще.

1 Ответ

0 голосов
/ 26 ноября 2018

Каждый элемент в карусели имеет один и тот же список ящиков, что означает, что если у вас есть древовидные блоки, каждый элемент в карусели содержит #box-1 и #box-2 и #box-3.Таким образом, вам нужно получить ближайший ящик к вашей ссылке:

$(document).ready(function() {

  $('.view-offer').click(function() {

    var linkID = $(this).data('id')
    var el = '#box-' + linkID
    $(this).siblings(el).toggleClass('test');

    console.log(el);

  });

  $(".offers-slider").owlCarousel({
    nav: false,
    autoPlay: false,
    navText: [
      "<i class='fa fa-angle-left'></i>",
      "<i class='fa fa-angle-right'></i>"
    ],
    loop: true,
    dots: false,
    items: 3
  });

});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/OwlCarousel2/2.3.4/owl.carousel.min.js"></script>
<link href="https://cdnjs.cloudflare.com/ajax/libs/OwlCarousel2/2.3.4/assets/owl.carousel.min.css" rel="stylesheet" />
<div class="owl-carousel owl-theme offers-slider">

  <div class="item">
    <a href="#!" class="view-offer" data-id="1">View</a>
    <div id="box-1">
      Box 1
    </div>
  </div>

  <div class="item">
    <a href="#!" class="view-offer" data-id="2">View</a>
    <div id="box-2">
      Box 2
    </div>
  </div>

  <div class="item">
    <a href="#!" class="view-offer" data-id="3">View</a>
    <div id="box-3">
      Box 3
    </div>
  </div>

</div>
...