【问题标题】:Remove all classes from SVG using jquery使用 jquery 从 SVG 中删除所有类
【发布时间】:2015-06-27 04:26:33
【问题描述】:

这是我的代码

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

【问题讨论】:

标签: javascript jquery css


【解决方案1】:

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

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

【讨论】:

  • 对于特定情况,我认为这实际上比许多赞成的答案更正确,因为这将留下一个空属性...
  • 如果元素有多个类会发生什么?
  • @YoannAugen 在这种情况下这个答案是不可取的,但它可以满足这个问题。
【解决方案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 他的 cmets。

【讨论】:

  • 这不保留其他类,例如“someClass2”。
  • 嗯,是的,但比$('.someClass').attr('class','');
  • 现在这不会删除“someClass”,如果它位于字符串的末尾。它仍然会删除“troublesomeClass”。
  • @codehx 只需使用.replace(/\bsomeClass\b/, '')
【解决方案3】:

很遗憾,您不能在 SVG 上调用 .removeClass()

改用 .attr()。

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

其他来源:

Martin Wolf

Similar SO Question

【讨论】:

【解决方案4】:

你可以使用它。有关更多信息,请参阅https://stackoverflow.com/a/2156090/909535

rect.classList.remove("CLASS_NAME");

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-10-18
    • 1970-01-01
    • 2012-06-08
    • 2015-04-24
    • 2010-11-28
    • 1970-01-01
    • 2013-04-26
    • 2012-01-08
    相关资源
    最近更新 更多