Я рассмотрел несколько вопросов, подобных моим, и попытался реализовать их решения, но мне не удалось заставить их работать.
Это код js, который я использую на своем сайте:
jQuery(function($){
$(".icon_circle").click(function () {
$('circle').removeClass('clicked');
$(this).addClass('clicked');
});
});
Вот jsfiddle: http://jsfiddle.net/AKXTV/3 (он адаптирован из jQuery SVG removeClass())
Вот мой сайт: http://watchcampfire.com/pre
Edit: Похоже, что он не работает в bootply, так что это может быть проблемой, когда он работает вместе с некоторым кодированием Bootstrap. http://www.bootply.com/120685
Я не вижу места, где вы инициализируете этот плагин swiper как это (согласно их веб-сайту):
$(function(){
var mySwiper = $('.swiper-container').swiper({
//Your options here:
mode:'horizontal',
loop: true
//etc..
});
})
Поскольку у вас это не похоже, это может быть причиной Uncaught TypeError: Cannot read property 'classList'
неопределенных ошибок. Фиксирование, которое должно заставить вас работать.
ОБНОВИТЬ:
Я думаю, что я понял причину проблемы здесь.
Это должно работать:
$('.icon_circle').on('click', function() {
$('.icon_circle').attr('class', function(index, classNames) {
//this is sort of lazy, oh well
return 'icon_circle';
});
$(this).attr('class', function(index, classNames) {
return classNames + ' clicked';
});
});
Там какая-то проблема с добавлением/удалением классов в элементах SVG.
Подробнее здесь: jQuery SVG, почему я не могу добавитьClass?
В итоге я получил руку помощи от PencilScoop.
Здесь идеальное рабочее решение, которое вообще не использует JS.
Я завернул свой SVG, вот так:
<input type="radio" id="v" name="button" value="video">
<label for="v">
<!-- SVG CODE -->
</label>
Затем добавили это в CSS:
input[type="radio"]:checked + label #shape_ID {
stroke: #EF4137
}
См. Рабочий код здесь: http://jsfiddle.net/3KnXF/5
Возможно, это связано с некоторой недействительной разметкой.
Если вы посмотрите на свой jsFiddle, вам не хватает тегов </g>
внутри нескольких тегов <svg/>
.
Вы можете сказать, что теги закрытия </svg>
будут красными.
У вас также есть <g id="circle">
несколько раз.
Вы не можете иметь несколько элементов с одним и тем же идентификатором.
<g></g>
и удалил идентификаторы кругов (они были созданы при экспорте из AI) на живом сайте. К сожалению, проблема сохраняется.
На вашем веб-сайте появляется много ошибок JS, которые останавливают выполнение вашего скрипта. Сначала разрешите эти ошибки, и он должен работать нормально.
$('circle')
не является объектом DOM, поэтому вы не можете использоватьremoveClass()
для него.