使用jquery从SVG中删除所有类

时间:2015-04-20 12:32:44

标签: javascript jquery css

这是我的代码

<!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?

4 个答案:

答案 0 :(得分:18)

不幸的是,您无法在SVG上调用.removeClass()

改为使用.attr()。

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

其他来源:

Martin Wolf

Similar SO Question

答案 1 :(得分:7)

这个($('.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 的评论。

答案 2 :(得分:4)

您可以使用removeAttr,它会找到所有匹配的元素并删除给定的属性。
在您的情况下,此代码将查找包含类someClass的所有元素,并将删除属性class
这个代码的优点是它不会留下空属性。

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

答案 3 :(得分:0)

你可以用它。有关详细信息,请参阅此https://stackoverflow.com/a/2156090/909535

rect.classList.remove("CLASS_NAME");