Удалить все классы из SVG с помощью jquery

вот мой код

<!DOCTYPE html>
<html>
<body>
<style>    
   .someClass {
            fill:gray;
        }
</style>
<svg width="400" height="110">
  <rect class="someClass" width="100" height="100"/>
</svg>
 <svg width="400" height="110">
  <rect class="someClass" width="100" height="100"/>
</svg>
 <svg width="400" height="110">
  <rect class="a" width="100" height="100"/>
</svg>
</body>
</html>

Как удалить все классы (.someClass) нужно удалить только в .someClass в документе без использования id?

Ответы

Ответ 1

Вы не можете вызвать .removeClass() на SVG, к сожалению.

Вместо этого используйте .attr().

$('.someClass').attr('class','');

дополнительные источники:

Мартин Волк

Подобный вопрос SO

Ответ 2

Это ($('.someClass').attr('class','');) удалит все классы всех элементов с классом someClass.


Это должно сделать трюк (сохраняет другие классы):

$(".someClass").each(function(){

     var classes = $(this).attr("class").split(" ");
     var otherClasses = "";
     for(var i = 0; i<classes.length; ++i){
        if(classes[i] !== "someClass"){
            otherClasses += classes[i] + " ";
        }
     }

     $(this).attr("class",otherClasses);

});

Спасибо @xehpuk за его комментарии.

Ответ 3

Вы можете использовать removeAttr, который найдет все согласованные элементы и удалит данный атрибут.
В вашем случае этот код найдет все элементы с классом someClass и удалит атрибут class.
И хорошее в этом коде состоит в том, что он не оставит пустой атрибут.

$('.someClass').removeAttr( "class" );

Ответ 4

Вы можете использовать это. Для получения дополнительной информации см. fooobar.com/info/16748/...

rect.classList.remove("CLASS_NAME");