Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Как сделать срабатывание вызова скрипта Vivus при определенном классе родителя? (https://javascript.ru/forum/dom-window/57544-kak-sdelat-srabatyvanie-vyzova-skripta-vivus-pri-opredelennom-klasse-roditelya.html)

Арсений JustPuk 08.08.2015 13:37

Как сделать срабатывание вызова скрипта Vivus при определенном классе родителя?
 
Добрый день. Туплю сильно, прошу не бить )
Есть скрипт Vivus для анимации SVG. Нужно запускать анимацию только при наличии у родителя класса active. Прошу помочь.
Структура документа
<div class="class active (active добавляется динамически)">
<div class="">
<div class="">
<svg id="svg-id">
</div>
</div>
</div>

Обработчик
var svgId = new Vivus('svg-id', {start: 'manual'});
if($('#svg-id').parent(.class).hasClass('active')) svgId.play(1);

EmperioAf 08.08.2015 13:57

с помощью classList.contains можно проверить наличие класса у DOM-элемента:
https://developer.mozilla.org/ru/doc...ment/classList

Арсений JustPuk 08.08.2015 14:01

Не могли бы вы чуть подробнее. Как на практике применить.

EmperioAf 08.08.2015 14:31

ну наверное так :) :
if (document.querySelector('.class').classList.contains('active'){
    var svgId = new Vivus('svg-id', {start: 'manual'});
    if($('#svg-id').parent(.class).hasClass('active')) svgId.play(1);
}

рони 08.08.2015 15:12

Цитата:

Сообщение от Арсений JustPuk
).parents(кавычки.classкавычки).

:write:

Арсений JustPuk 08.08.2015 17:33

Ошибку Uncaught SyntaxError: Unexpected token выдает

рони 08.08.2015 18:38

Цитата:

Сообщение от Арсений JustPuk
Unexpected token выдает

на какую строку кода?

EmperioAf 08.08.2015 18:40

Цитата:

Сообщение от Арсений JustPuk (Сообщение 383251)
Ошибку Uncaught SyntaxError: Unexpected token выдает

да, действительно я случайно забыл скобку поставить, т.к. писал прямо здесь.
if (document.querySelector('.class').classList.contains('active')){
    var svgId = new Vivus('svg-id', {start: 'manual'});
    if($('#svg-id').parent(.class).hasClass('active')) svgId.play(1);
}

Арсений JustPuk 08.08.2015 19:02

Очень странно. Я думал, что этот вызов будет работать. Не могли бы вы помочь, не могу запустить анимацию

рони 08.08.2015 19:15

Цитата:

Сообщение от EmperioAf
parent(.class)

:-?

Арсений JustPuk 08.08.2015 19:16

Ошибку уже исправил, но не работает
if (document.querySelector('.design').classList.contains('active')){
        var svgId = new Vivus('obturateur1', {start: 'autostart', duration: 250,animTimingFunction: Vivus.EASE_OUT});
        if($('#obturateur1').parent('.design').hasClass('active')) svgId.play(1);
    }

рони 08.08.2015 19:23

Цитата:

Сообщение от Арсений JustPuk
parent

а где s?

рони 08.08.2015 19:26

if (document.querySelector('.design').classList.contains('active')){
        var svgId = new Vivus('obturateur1', {start: 'autostart', duration: 250,animTimingFunction: Vivus.EASE_OUT});
        if($('#obturateur1').parent('.design').hasClass('active')) svgId.play(1);
    }

масло масляное
var svgId = new Vivus('obturateur1', {start: 'autostart', duration: 250,animTimingFunction: Vivus.EASE_OUT}); 
if (document.querySelector('.design').classList.contains('active')){svgId.play(1);}

Арсений JustPuk 08.08.2015 19:27

Попробую сейчас

рони 08.08.2015 19:29

Арсений JustPuk,
или так
var svgId = new Vivus('obturateur1', {start: 'autostart', duration: 250,animTimingFunction: Vivus.EASE_OUT}); 




        if($('#obturateur1').parents('.design').hasClass('active')) svgId.play(1);

Арсений JustPuk 08.08.2015 19:39

Заменил в start autostart на manual, т.к. анимация стартовала сразу, не работает.

var svgId = new Vivus('obturateur1', {start: 'manual', duration: 250,animTimingFunction: Vivus.EASE_OUT});
    if (document.querySelector('.design').classList.contains('active')){svgId.play(1);}

Арсений JustPuk 08.08.2015 19:44

Так срабатывает всегда, не важно есть active или нет, за это отвечает start: 'autostart'

start: 'manual' вроде как должен позволять выводить в ручном режиме, в зависимости от необходимости, но он не срабатывает


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