Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Если нажатие сделано до и после (https://javascript.ru/forum/dom-window/80993-esli-nazhatie-sdelano-do-i-posle.html)

ethereal 09.09.2020 00:22

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

<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 происходило одно событие, и при нажатий после происходило другое событие!

Спасибо!

laimas 09.09.2020 03:00

Цитата:

Сообщение от ethereal
Оно динамическое

В смысле добавления на страницу? Тогда динамическое что, весь блок или его кнопки?

ethereal 09.09.2020 03:12

Класс active меняется

laimas 09.09.2020 03:35

Цитата:

Сообщение от ethereal
Класс active меняется

Ну это не динамика. Можно так, установив на каждую кнопку свой обработчик:

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


для последней тоже самое, но заменив first-child на last-child и со своим кодом в обработчике. Можно делегировать обработку щелчков родителю p-nav-inner и в обработчике проверяя какая кнопка нажата, например по тексту кнопки, или добавить им tabindex и по нему, и т.п., выполнять соответствующее действие.

ethereal 09.09.2020 03:48

Да нет, так не пойдет. Возможно я не правильно выразился... Конечно кнопок может быть разное количество а не только 3.

laimas 09.09.2020 04:10

Цитата:

Сообщение от laimas
кнопок может быть разное количество а не только 3

При этом класс active может быть у любого элемента и только у одного из них? А что за задача с кнопками, может ее на ином условии или вообще без него решить можно?

ethereal 09.09.2020 04:19

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

Это слайдер, кнопки это навигация. Кнопок столько же сколько и слайдов, а класс active менятся к другим кнопкам в зависимости от активного слайда

laimas 09.09.2020 04:37

У этого слайдера куча параметров, как методов так и событий, в которых можно узнать индексы элементов. Я наизусть не помню всего, но можно это использовать. Но вы так и не ответили зачем это нужно узнавать.

laimas 09.09.2020 04:55

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>

рони 09.09.2020 06:55

ethereal,
:-?


Часовой пояс GMT +3, время: 16:28.