@sergemin

Почему реагирует на js только первый dom элемент?

Работаю с сайтом
Подгружаю части страниц ajax'ом. И все бы нормально, но нужно сделать так, чтобы на карте, при выборе секции, ситуация тоже менялась.
Написал код
var path = ['id1', 'id2', ... 'id7'],
      links_sect_2 =  ['link1', 'link2', ... 'link7'];

$('.korpus_minimap').click(function(e) {
                var target = e.target;
                if(target.tagName !== 'path') return;
                for(var i = 0; i<paths.length; i++) {
                    $('#'+paths[i]).css({'opacity': '0'});
                    if(target.id === paths[i]) {
                        var chosenPath = paths[i];
                        $('.plan_frame_center').load(links_sect_2[i] + ' .floor_map');
                        history.pushState('', '', links_sect_2[i]);
                    }
                }
                $('#'+chosenPath).css({'opacity': '1'});
                $('#'+chosenPath).addClass('active_map');
                $('#'+chosenPath).attr({'opacity': '1'});
            })

проблема в том, что path, начиная со второго внутри не реагирует на мои действия в js. Точнее в консоли показывает, что присваивается класс, меняется свойство и т.п. но в самом дереве в инспекторе нет никаких изменений
И вообще, я не могу повесить обработчик на svg? Делал дерегирование на теги svg или g - ноль реакции

Проверял с помощью события, повешенного на весь документ, так все нормально. Не понимаю, в чем беда
  • Вопрос задан
  • 169 просмотров
Решения вопроса 1
larisamoroz
@larisamoroz
Курю маны, втыкаю в код, ваяю, починяю.
svg — это отдельный внедрённый документ ( тот же принцип, что и с iframe ), у него свой отдельный DOM никак не связанный в DOM вашей страницы.
Получить доступ к нему можно через getSVGDocument или contentDocument.
Подробнее : https://developer.mozilla.org/en-US/docs/Web/SVG/S... или blog.g63.ru/other/%D0%BE%D0%B1%D1%80%D0%B0%D1%89%D...
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
KorniloFF
@KorniloFF Куратор тега JavaScript
Работаю по font-end / JS
Массив - path
В коде функции - paths[i]
А if(target.tagName !== 'path') return; - вообще не понятно.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы