Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 15.06.2020, 17:38
Интересующийся
Отправить личное сообщение для Alice Romanova Посмотреть профиль Найти все сообщения от Alice Romanova
 
Регистрация: 15.06.2020
Сообщений: 11

Slick Slider, sledeUp() и slideToggle() - конфликт?
Здравствуйте! Столкнулась с проблемой: на сайте подключен slick slider. Делаю спойлер.
$('.spoiler__title').click(function(event){
        if($('.spoiler').hasClass('one')){
            $('.spoiler__title').not($(this)).removeClass('active');
            $('.spoiler__text').not($(this).next()).slideUp(300);
        }
        $(this).toggleClass('active').next().slideToggle(300);
    })

Спойлер не работает. Консоль выдаёт ошибку "Uncaught TypeError: $(...).not(...).slideUp is not a function"
Если отключить slick slider - всё работает. То есть, я так понимаю, что тут конфликт.
Подскажите, пожалуйста, можно ли его как-то разрешить, не отключая slick slider?
P.S.
Если заменить slideUp() и slideToggle() на show() и hide(), то работает и со slick slider, но некрасиво.
Ответить с цитированием
  #2 (permalink)  
Старый 15.06.2020, 17:42
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

$('.spoiler__title').click(function(event){
тут $(this) это и есть $('.spoiler__title')

Следовательно что такое будет $('.spoiler__title').not($(this))?
Ответить с цитированием
  #3 (permalink)  
Старый 15.06.2020, 17:56
Интересующийся
Отправить личное сообщение для Alice Romanova Посмотреть профиль Найти все сообщения от Alice Romanova
 
Регистрация: 15.06.2020
Сообщений: 11

Удаляю класс 'active' у всех элементов, кроме одного (чтобы при открывании одного блока, другой закрывался).

Вы считаете, это как-то влияет на конфликт, описанный в вопросе?
Ответить с цитированием
  #4 (permalink)  
Старый 15.06.2020, 17:59
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от Alice Romanova
Вы считаете, это как-то влияет на конфликт, описанный в вопросе?
$('.spoiler__title').click(function(event){
if($('.spoiler').hasClass('one')){
$('.spoiler__title').not($(this)).removeClass('act ive');
$('.spoiler__text').not($(this).next()).slideUp(30 0);
}
$(this).toggleClass('active').next().slideToggle(3 00);

})

И выполните вот такое:

$('.spoiler__title').click(function(event){
    console.log($('.spoiler__title').not(this))
})


Что в консоли наблюдается? Или $('.spoiler__title') это у вас коллекция?

Последний раз редактировалось laimas, 15.06.2020 в 18:01.
Ответить с цитированием
  #5 (permalink)  
Старый 15.06.2020, 18:03
Интересующийся
Отправить личное сообщение для Alice Romanova Посмотреть профиль Найти все сообщения от Alice Romanova
 
Регистрация: 15.06.2020
Сообщений: 11

Ничего.
Ответить с цитированием
  #6 (permalink)  
Старый 15.06.2020, 18:07
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Если $('.spoiler__title'), это коллекция, то $('.spoiler__title').not(this), это удалить из нее источник события с этим же классом из этой коллекции (просто this не надо тут получать JQ объект). То есть все верно тогда. Но как тогда объяснить это:

$('.spoiler__text').not($(this)), это что за коллекция и какое отношение к ней имеет $('.spoiler__text')?

PS. Кстати, тогда лучше так:

var name = $('.spoiler__title').click(function(event){
  //а тут не $('.spoiler__title').not($(this)), а
   name.not(this)....


зачем постоянно получать коллекцию.

Последний раз редактировалось laimas, 15.06.2020 в 18:11.
Ответить с цитированием
  #7 (permalink)  
Старый 15.06.2020, 18:12
Интересующийся
Отправить личное сообщение для Alice Romanova Посмотреть профиль Найти все сообщения от Alice Romanova
 
Регистрация: 15.06.2020
Сообщений: 11

Может быть, так понятнее будет.

<div class="spoiler one">
    <div class="spoiler__item">
        <div class="spoiler__title">Заголовок</div>
        <div class="spoiler__text">Далеко-далеко за словесными горами в стране
            гласных и согласных живут.</div>
    </div>
    <div class="spoiler__item">
        <div class="spoiler__title">Заголовок</div>
        <div class="spoiler__text">Далеко-далеко за словесными горами в стране
            гласных и согласных живут.</div>
    </div>
    <div class="spoiler__item">
        <div class="spoiler__title">Заголовок</div>
        <div class="spoiler__text">Далеко-далеко за словесными горами в стране
            гласных и согласных живут.</div>
    </div>
    <div class="spoiler__item">
        <div class="spoiler__title">Заголовок</div>
        <div class="spoiler__text">Далеко-далеко за словесными горами в стране
            гласных и согласных живут.</div>
    </div>
</div>
Ответить с цитированием
  #8 (permalink)  
Старый 15.06.2020, 18:31
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Тогда вот это

$('.spoiler__title').not($(this)).removeClass('act ive');
$('.spoiler__text').not($(this).next()).slideUp(30 0);

можно заменить на:

spl.hot(this).removeClass('active').siblings().slideUp(300)


где spl = var spl = $('.spoiler__title').click...., иначе так заумно, что не понять что к чему. ) Что за проблема со слайдером сказать не могу, может к документации обратиться?

Последний раз редактировалось laimas, 15.06.2020 в 18:41.
Ответить с цитированием
  #9 (permalink)  
Старый 15.06.2020, 19:00
Интересующийся
Отправить личное сообщение для Alice Romanova Посмотреть профиль Найти все сообщения от Alice Romanova
 
Регистрация: 15.06.2020
Сообщений: 11

К документации обращалась (может, плохо обращалась, конечно). Ничего там не нашла по своему вопросу.
В любом случае, спасибо, что потратили своё время)
Ответить с цитированием
  #10 (permalink)  
Старый 15.06.2020, 19:16
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

$(...).not(...).slideUp is not a function - означает, что нет объекта/объектов, и применить к ним функцию нельзя.

Последний раз редактировалось laimas, 15.06.2020 в 19:33.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Slick Slider. Изменение позиции переключателей. LLIypuk jQuery 1 19.09.2017 12:57
Slick slider навигация Sokoljr jQuery 5 21.08.2017 11:44
Задача по Slick Slider Frankie_peddler jQuery 6 15.04.2017 21:50
Конфликт Nivi slider c выпадающими меню и формой обратного звонка missmirta jQuery 0 05.07.2016 22:54
Отображение модального окна со slick slider Drm1804 jQuery 3 23.03.2015 17:01