2014-10-21 3 views
0

Я использую Slick carousel Плагин jQuery. В docs он имеет опцию appendArrows. Насколько я понимаю, его можно использовать, чтобы стрелки придерживались другого элемента. Я использую карусель, который вложен, так что каждый слайд имеет заголовок, ссылку, описание и пару суб-слайдов, которые являются изображениями. При настройках по умолчанию стрелки nav центрируются по всему слайду. Я бы хотел, чтобы их добавляли только к изображениям, но я не могу понять, как это сделать. appendArrows: $('img’) не работает.jQuery - Карандаш для карандашей - Как использовать appendTo() в этой ситуации?

Вот разметка:

<div class="slider-for"> 

      <div class="single-item"> 
       <h4>Title</h4> 
       <a href=“#” target="_blank">example.com</a> 
       <p>Description.</p> 
       <img class="img-responsive" src="http://placehold.it/960x540"> 
       <img class="img-responsive" src="http://placehold.it/960x540"> 
       <img class="img-responsive" src="http://placehold.it/960x540"> 
       <img class="img-responsive" src="http://placehold.it/960x540"> 
       <img class="img-responsive" src="http://placehold.it/960x540"> 
      </div> 

      <div class="single-item"> 
       <h4>Title</h4> 
       <a href=“#” target="_blank">example.com</a> 
       <p>Description.</p> 
       <img class="img-responsive" src="http://placehold.it/960x540"> 
       <img class="img-responsive" src="http://placehold.it/960x540"> 
       <img class="img-responsive" src="http://placehold.it/960x540"> 
       <img class="img-responsive" src="http://placehold.it/960x540"> 
       <img class="img-responsive" src="http://placehold.it/960x540"> 
      </div> 

    <div class="single-item"> 
       <h4>Title</h4> 
       <a href=“#” target="_blank">example.com</a> 
       <p>Description.</p> 
       <img class="img-responsive" src="http://placehold.it/960x540"> 
       <img class="img-responsive" src="http://placehold.it/960x540"> 
       <img class="img-responsive" src="http://placehold.it/960x540"> 
       <img class="img-responsive" src="http://placehold.it/960x540"> 
       <img class="img-responsive" src="http://placehold.it/960x540"> 
      </div> 

</div> 

И JS:

$('.slider-for').slick({ 
     slidesToShow: 1, 
     slidesToScroll: 1, 
     fade: true, 
     swipe: false, 
     accessibility: false, 
     arrows: false, 
    }); 

$('.single-item').slick({ 
     slide: 'img', 
     dots: true, 
     speed: 500, 
     arrows: true, 
     appendArrows: $('img'), 
    });` 

EDIT: Я думаю, что вопрос не ясно, мой плохой. .slider-for переключается на .slider-nav, который я пропустил из примера. Все это работает, моя проблема - скорее эстетика. Когда стрелки добавляются ко всему .single-item, они центрируются по вертикали на высоту всего <div class="single-item">, и это выглядит нечетным, так как внутри него фактически сползает только <img>. Я хотел бы добавить стрелки к <img>, чтобы они были центрированы по вертикали до высоты изображения. Надеюсь, это имеет смысл.

Я предполагаю, что я действительно спрашиваю: как мне настроить цель <img> внутри <div class="single-item"> с appendArrows()? Состояние документов:

Опции: appendArrows; Тип: строка; По умолчанию: $ (элемент); Desc .: Изменение где навигационные стрелки прикрепляются (селектор, HTMLString, массив, Element, JQuery объект)

Как использовать это? Пожалуйста, имейте в виду, что я полный новичок, я не знаю много JS, поэтому я, вероятно, не вижу ничего очевидного.

+0

appendArrows, вероятно, принимает только уникальный контейнерный элемент, то есть идентификатор элемента. Можете ли вы опубликовать jsfiddle? –

+0

Так что я должен добавить, например. '# slide' в' ', а затем' appendArrows: $ ('# slide') '? Я не могу сделать jsfiddle, так как сейчас я не дома. – filiplaw

+0

№ ID должен быть уникальным на странице. Кроме того, вы не должны пытаться присоединить стрелки к каждому элементу изображения. Функция appendArrows существует для добавления стрелок влево/вправо только к одному элементу DOM. Вы должны добавить их в элемент .slider-for. –

ответ

0

У меня есть. Это была глупая ошибка. Я просто переместил <div class="single-item"> вниз, чтобы обернуть только <img> и обернул все это в другом div. Например:

<div> 
      <h4>Title</h4> 
      <a href=“#” target="_blank">example.com</a> 
      <p>Description.</p> 
     <div class="single-item"> 
      <img class="img-responsive" src="http://placehold.it/960x540"> 
      <img class="img-responsive" src="http://placehold.it/960x540"> 
      <img class="img-responsive" src="http://placehold.it/960x540"> 
      <img class="img-responsive" src="http://placehold.it/960x540"> 
      <img class="img-responsive" src="http://placehold.it/960x540"> 
     </div> 
    </div> 
0

добавить следующее CSS:

.slick-prev 
{ 
    position: absolute; 
    left: 0px; 
} 
.slick-next 
{ 
    position: absolute; 
    right: 50px; 
} 

и внести изменения в JS, чтобы отразить следующее:

$('.slider-for').slick({ 
     slidesToShow: 1, 
     slidesToScroll: 1, 
     fade: true, 
     swipe: false, 
     accessibility: false, 
     arrows: true 
    }); 
    $('.single-item').slick({ 
     slide: 'img', 
     dots: true, 
     speed: 500, 
     arrows: false 
    }); 

Если выше производит ваш желаемый результат, вы можете настроить положение следующей стрелки путем корректировки правая собственность .slick-next

+0

Но таким образом стрелки переключили '.sider-for' вместо' .single-item> img', не так ли? – filiplaw

+0

Да, да. Должно быть, я понял неправильно. Хотели бы вы, чтобы стрелки вели себя как точки, будут ли стрелки перейти к следующему изображению в этом единственном элементе? В этом случае, что бы переключить слайдер? –

+0

Да. '.slider-for' переключается через' .lider-nav', который я пропустил из приведенного выше кода, поскольку я не думал, что это может быть проблемой. Это в основном синхронизированный слайдер, например, пример на странице [Slick] (http://kenwheeler.github.io/slick/) с добавленным внутри. – filiplaw

Смежные вопросы