Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 09.09.2020, 00:22
Аспирант
Отправить личное сообщение для ethereal Посмотреть профиль Найти все сообщения от ethereal
 
Регистрация: 06.05.2019
Сообщений: 94

Если нажатие сделано до и после
Ребета, подскажите нубу. Есть такая конструкция:

<div class="p-nav-inner">
<button role="button" class="owl-dot"></button>
<button role="button" class="owl-dot active"></button>
<button role="button" class="owl-dot"></button>
</div>


Оно динамическое, нужно что бы при нажатий на кнопку до owl-dot active происходило одно событие, и при нажатий после происходило другое событие!

Спасибо!
Ответить с цитированием
  #2 (permalink)  
Старый 09.09.2020, 03:00
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от ethereal
Оно динамическое
В смысле добавления на страницу? Тогда динамическое что, весь блок или его кнопки?
Ответить с цитированием
  #3 (permalink)  
Старый 09.09.2020, 03:12
Аспирант
Отправить личное сообщение для ethereal Посмотреть профиль Найти все сообщения от ethereal
 
Регистрация: 06.05.2019
Сообщений: 94

Класс active меняется
Ответить с цитированием
  #4 (permalink)  
Старый 09.09.2020, 03:35
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от ethereal
Класс active меняется
Ну это не динамика. Можно так, установив на каждую кнопку свой обработчик:

document.querySelector('div.p-nav-inner button:first-child').addEventListener('click', function() {
    //здесь выполнение кода для первой кнопки
})


для последней тоже самое, но заменив first-child на last-child и со своим кодом в обработчике. Можно делегировать обработку щелчков родителю p-nav-inner и в обработчике проверяя какая кнопка нажата, например по тексту кнопки, или добавить им tabindex и по нему, и т.п., выполнять соответствующее действие.
Ответить с цитированием
  #5 (permalink)  
Старый 09.09.2020, 03:48
Аспирант
Отправить личное сообщение для ethereal Посмотреть профиль Найти все сообщения от ethereal
 
Регистрация: 06.05.2019
Сообщений: 94

Да нет, так не пойдет. Возможно я не правильно выразился... Конечно кнопок может быть разное количество а не только 3.
Ответить с цитированием
  #6 (permalink)  
Старый 09.09.2020, 04:10
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от laimas
кнопок может быть разное количество а не только 3
При этом класс active может быть у любого элемента и только у одного из них? А что за задача с кнопками, может ее на ином условии или вообще без него решить можно?
Ответить с цитированием
  #7 (permalink)  
Старый 09.09.2020, 04:19
Аспирант
Отправить личное сообщение для ethereal Посмотреть профиль Найти все сообщения от ethereal
 
Регистрация: 06.05.2019
Сообщений: 94

Вот пример https://owlcarousel2.github.io/OwlCa...autowidth.html

Это слайдер, кнопки это навигация. Кнопок столько же сколько и слайдов, а класс active менятся к другим кнопкам в зависимости от активного слайда
Ответить с цитированием
  #8 (permalink)  
Старый 09.09.2020, 04:37
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

У этого слайдера куча параметров, как методов так и событий, в которых можно узнать индексы элементов. Я наизусть не помню всего, но можно это использовать. Но вы так и не ответили зачем это нужно узнавать.
Ответить с цитированием
  #9 (permalink)  
Старый 09.09.2020, 04:55
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

ethereal,
почитайте документацию слайдера, может все решить можно уже готовым. А узнать положение это конечно по индексу в наборе, на примере кнопок выше:

<div class="p-nav-inner">
<button role="button" class="owl-dot">before</button>
<button role="button" class="owl-dot">before</button>
<button role="button" class="owl-dot active">active</button>
<button role="button" class="owl-dot">after</button>
<button role="button" class="owl-dot">after</button>
<button role="button" class="owl-dot">after</button>
</div>

<script>
var btn = [...document.querySelectorAll('button.owl-dot')];
btn.forEach((e) => {
    e.addEventListener('click', (e) => {
        var index_act = btn.indexOf(btn.filter((e) => e.classList.contains('active'))[0]),
            index_src = btn.indexOf(e.target);
            
        if(index_src < index_act) console.log('Press button before');
        if(index_src > index_act) console.log('Press button after');
    })
});
</script>
Ответить с цитированием
  #10 (permalink)  
Старый 09.09.2020, 06:55
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,070

ethereal,
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Скрыть ссылку/кнопку после нажатия. Ares Общие вопросы Javascript 1 22.10.2015 09:53
Почему после использования data атрибута в setTimeout, он перестаёт быть доступным ? tomberty Events/DOM/Window 14 19.09.2015 23:45
Система всплывающих сообщений ruslan_mart Ваши сайты и скрипты 32 27.05.2015 21:28
[Работа] Два модальных окна на JQuery VictorM Работа 3 14.08.2012 23:09
Модуль для работы с модулями JSprog Ваши сайты и скрипты 29 02.09.2009 13:31