Как нажать на кнопку перелистывания и чтобы листались 2 карусели?

616
10 сентября 2017, 03:04

Вот есть 2 карусели: https://jsfiddle.net/hhnq8a26/1/ Как сделать так, чтобы при нажатии на кнопку prev(крассный фон) одной из них перелистывались сразу обе карусели. Обе карусели могут быть в разных блоках далеко друг от друга. нажал на кнопку перелистывания и листаются 2 карусели

		$(document).ready(function() { 
 
$('.owl-carousel').owlCarousel({ 
    loop:true, 
    margin:10, 
    nav:true, 
    responsive:{ 
        0:{ 
            items:1 
        }, 
        600:{ 
            items:3 
        }, 
        1000:{ 
            items:5 
        } 
    } 
}) 
		});
.q1 .owl-prev { 
  background: red; 
}
<div class="owl-carousel q1"> 
    <div class="item"><h4>1</h4></div> 
    <div class="item"><h4>2</h4></div> 
    <div class="item"><h4>3</h4></div> 
    <div class="item"><h4>4</h4></div> 
    <div class="item"><h4>5</h4></div> 
    <div class="item"><h4>6</h4></div> 
    <div class="item"><h4>7</h4></div> 
    <div class="item"><h4>8</h4></div> 
    <div class="item"><h4>9</h4></div> 
    <div class="item"><h4>10</h4></div> 
    <div class="item"><h4>11</h4></div> 
    <div class="item"><h4>12</h4></div> 
</div> 
<div class="owl-carousel"> 
    <div class="item"><h4>1</h4></div> 
    <div class="item"><h4>2</h4></div> 
    <div class="item"><h4>3</h4></div> 
    <div class="item"><h4>4</h4></div> 
    <div class="item"><h4>5</h4></div> 
    <div class="item"><h4>6</h4></div> 
    <div class="item"><h4>7</h4></div> 
    <div class="item"><h4>8</h4></div> 
    <div class="item"><h4>9</h4></div> 
    <div class="item"><h4>10</h4></div> 
    <div class="item"><h4>11</h4></div> 
    <div class="item"><h4>12</h4></div> 
</div>

Answer 1

Достаточно добавить кастомные кнопки и забиндить на них триггеры:

var owl = $('.owl-carousel'); 
 
owl.owlCarousel({ 
  loop: true, 
  margin: 10, 
  nav: false, 
  responsive: { 
    0: { 
      items: 1 
    }, 
    600: { 
      items: 3 
    }, 
    1000: { 
      items: 5 
    } 
  } 
}); 
 
$('.go-prev').click(function() { 
  owl.trigger('prev.owl.carousel'); 
}); 
 
$('.go-next').click(function() { 
  owl.trigger('next.owl.carousel'); 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
<script src="https://cdnjs.cloudflare.com/ajax/libs/OwlCarousel2/2.2.1/owl.carousel.min.js"></script> 
<link href="https://cdnjs.cloudflare.com/ajax/libs/OwlCarousel2/2.2.1/assets/owl.theme.default.css" rel="stylesheet" /> 
<link href="https://cdnjs.cloudflare.com/ajax/libs/OwlCarousel2/2.2.1/assets/owl.carousel.css" rel="stylesheet" /> 
<div class="owl-carousel q1"> 
  <div class="item"> 
    <h4>1</h4> 
  </div> 
  <div class="item"> 
    <h4>2</h4> 
  </div> 
  <div class="item"> 
    <h4>3</h4> 
  </div> 
  <div class="item"> 
    <h4>4</h4> 
  </div> 
  <div class="item"> 
    <h4>5</h4> 
  </div> 
  <div class="item"> 
    <h4>6</h4> 
  </div> 
  <div class="item"> 
    <h4>7</h4> 
  </div> 
  <div class="item"> 
    <h4>8</h4> 
  </div> 
  <div class="item"> 
    <h4>9</h4> 
  </div> 
  <div class="item"> 
    <h4>10</h4> 
  </div> 
  <div class="item"> 
    <h4>11</h4> 
  </div> 
  <div class="item"> 
    <h4>12</h4> 
  </div> 
</div> 
<div class="owl-carousel q2"> 
  <div class="item"> 
    <h4>1</h4> 
  </div> 
  <div class="item"> 
    <h4>2</h4> 
  </div> 
  <div class="item"> 
    <h4>3</h4> 
  </div> 
  <div class="item"> 
    <h4>4</h4> 
  </div> 
  <div class="item"> 
    <h4>5</h4> 
  </div> 
  <div class="item"> 
    <h4>6</h4> 
  </div> 
  <div class="item"> 
    <h4>7</h4> 
  </div> 
  <div class="item"> 
    <h4>8</h4> 
  </div> 
  <div class="item"> 
    <h4>9</h4> 
  </div> 
  <div class="item"> 
    <h4>10</h4> 
  </div> 
  <div class="item"> 
    <h4>11</h4> 
  </div> 
  <div class="item"> 
    <h4>12</h4> 
  </div> 
</div> 
 
<div class="go-prev">prev</div> 
<div class="go-next">next</div>

Если также необходима синхронная прокрутка, например, при drag или mousewheel (если есть) event'ах, могу порекомендовать дополнение Owl Linked, которое позволяет связывать между собой несколько каруселей:

! function(e, t, o, i) { 
  var n = function(t) { 
    this._core = t, this._handlers = { 
      "dragged.owl.carousel changed.owl.carousel": e.proxy(function(e) { 
        e.namespace && this._core.settings.linked && this.update(e) 
      }, this), 
      "linked.to.owl.carousel": e.proxy(function(e, t, o, i, n) { 
        e.namespace && this._core.settings.linked && this.toSlide(t, o, n) 
      }, this) 
    }, this._core.$element.on(this._handlers), this._core.options = e.extend({}, n.Defaults, this._core.options) 
  }; 
  n.Defaults = { 
    linked: !1 
  }, n.prototype.update = function(e) { 
    this.toSlide(e.relatedTarget.relative(e.item.index)) 
  }, n.prototype.toSlide = function(t, o, i) { 
    var n = (this._core.$element.attr("id"), this._core.settings.linked.split(",")); 
    "undefined" == typeof i && (i = !0), t = t || 0, i ? e.each(n, function(o, i) { 
      e(i).trigger("linked.to.owl.carousel", [t, 300, !0, !1]) 
    }) : (this._core.$element.trigger("to.owl.carousel", [t, 300, !0]), this._core.settings.current && this._core._plugins.current.switchTo(t)) 
  }, n.prototype.destroy = function() { 
    var e, t; 
    for (e in this._handlers) this.$element.off(e, this._handlers[e]); 
    for (t in Object.getOwnPropertyNames(this)) "function" != typeof this[t] && (this[t] = null) 
  }, e.fn.owlCarousel.Constructor.Plugins.linked = n 
}(window.Zepto || window.jQuery, window, document); 
 
var owl = $('.owl-carousel'); 
 
owl.owlCarousel({ 
  loop: true, 
  margin: 10, 
  nav: false, 
  linked: '.q1, .q2', 
  responsive: { 
    0: { 
      items: 1 
    }, 
    600: { 
      items: 3 
    }, 
    1000: { 
      items: 5 
    } 
  } 
}); 
 
$('.go-prev').click(function() { 
  owl.trigger('prev.owl.carousel'); 
}); 
 
$('.go-next').click(function() { 
  owl.trigger('next.owl.carousel'); 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
<script src="https://cdnjs.cloudflare.com/ajax/libs/OwlCarousel2/2.2.1/owl.carousel.min.js"></script> 
<link href="https://cdnjs.cloudflare.com/ajax/libs/OwlCarousel2/2.2.1/assets/owl.theme.default.css" rel="stylesheet" /> 
<link href="https://cdnjs.cloudflare.com/ajax/libs/OwlCarousel2/2.2.1/assets/owl.carousel.css" rel="stylesheet" /> 
<div class="owl-carousel q1"> 
  <div class="item"> 
    <h4>1</h4> 
  </div> 
  <div class="item"> 
    <h4>2</h4> 
  </div> 
  <div class="item"> 
    <h4>3</h4> 
  </div> 
  <div class="item"> 
    <h4>4</h4> 
  </div> 
  <div class="item"> 
    <h4>5</h4> 
  </div> 
  <div class="item"> 
    <h4>6</h4> 
  </div> 
  <div class="item"> 
    <h4>7</h4> 
  </div> 
  <div class="item"> 
    <h4>8</h4> 
  </div> 
  <div class="item"> 
    <h4>9</h4> 
  </div> 
  <div class="item"> 
    <h4>10</h4> 
  </div> 
  <div class="item"> 
    <h4>11</h4> 
  </div> 
  <div class="item"> 
    <h4>12</h4> 
  </div> 
</div> 
<div class="owl-carousel q2"> 
  <div class="item"> 
    <h4>1</h4> 
  </div> 
  <div class="item"> 
    <h4>2</h4> 
  </div> 
  <div class="item"> 
    <h4>3</h4> 
  </div> 
  <div class="item"> 
    <h4>4</h4> 
  </div> 
  <div class="item"> 
    <h4>5</h4> 
  </div> 
  <div class="item"> 
    <h4>6</h4> 
  </div> 
  <div class="item"> 
    <h4>7</h4> 
  </div> 
  <div class="item"> 
    <h4>8</h4> 
  </div> 
  <div class="item"> 
    <h4>9</h4> 
  </div> 
  <div class="item"> 
    <h4>10</h4> 
  </div> 
  <div class="item"> 
    <h4>11</h4> 
  </div> 
  <div class="item"> 
    <h4>12</h4> 
  </div> 
</div> 
 
<div class="go-prev">prev</div> 
<div class="go-next">next</div>

Answer 2

Привет =)

$(document).ready(function() {
let owl = $('.owl-carousel').owlCarousel({
  loop: true
});
let carousel1 = $('.carousel1').owlCarousel({
  loop: true
});
let carousel2 = $('.carousel2').owlCarousel({
  loop: true
});
$(".nav-left-red").click(function () {
  owl.trigger('prev.owl.carousel');
});
$(".nav-left-carousel2").click(function () {
  carousel2.trigger('prev.owl.carousel');
});
$(".nav-right-carousel2").click(function () {
  carousel2.trigger('next.owl.carousel');
});
$(".nav-left-carousel1").click(function () {
  carousel1.trigger('prev.owl.carousel');
});
$(".nav-right-carousel1").click(function () {
  carousel1.trigger('next.owl.carousel');
});
});

Первая карусель:

<div class="owl-carousel q1">
  <div class="item"><h4>1</h4></div>
  <div class="item"><h4>2</h4></div>
  <div class="item"><h4>3</h4></div>
  <div class="item"><h4>4</h4></div>
  <div class="item"><h4>5</h4></div>
  <div class="item"><h4>6</h4></div>
  <div class="item"><h4>7</h4></div>
  <div class="item"><h4>8</h4></div>
  <div class="item"><h4>9</h4></div>
  <div class="item"><h4>10</h4></div>
  <div class="item"><h4>11</h4></div>
  <div class="item"><h4>12</h4></div>
</div>
<button class=""nav-left-red owl-prev">prev</button>
<button class="nav-right-carousel1">next</button>

Вторая карусель:

<div class="owl-carousel">
  <div class="item"><h4>1</h4></div>
  <div class="item"><h4>2</h4></div>
  <div class="item"><h4>3</h4></div>
  <div class="item"><h4>4</h4></div>
  <div class="item"><h4>5</h4></div>
  <div class="item"><h4>6</h4></div>
  <div class="item"><h4>7</h4></div>
  <div class="item"><h4>8</h4></div>
  <div class="item"><h4>9</h4></div>
  <div class="item"><h4>10</h4></div>
  <div class="item"><h4>11</h4></div>
  <div class="item"><h4>12</h4></div>
</div>
<button class="nav-left-carousel2">prev</button>
<button class="nav-right-carousel2">next</button>

Стили:

.owl-prev {
  background: red;
}

По идеи должно работать так как Вы хотите: https://jsfiddle.net/hhnq8a26/15/

READ ALSO
Каким образом получить id при клике?

Каким образом получить id при клике?

ЗдравствуйтеЕсть ссылки вида:

371
Слияние двух объектов

Слияние двух объектов

Возникла необходимость объединения 2-х объектов в один, с соблюдением некоторых правил:

279
Динамическая таблица на Javascript

Динамическая таблица на Javascript

Прошу помощи добавить кнопку редактирования / сохранения в ячейке, рядом с другими кнопками добавления и удаления строкКнопка должна дублироваться...

514