首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否可以使用jQuery删除内联样式?

是否可以使用jQuery删除内联样式?
EN

Stack Overflow用户
提问于 2010-03-18 03:14:59
回答 15查看 306.7K关注 0票数 241

jQuery插件正在应用内联样式(display:block)。我感觉自己很懒,想用display:none覆盖它。

最好的(懒惰)方式是什么?

EN

回答 15

Stack Overflow用户

回答已采纳

发布于 2011-07-02 06:19:56

更新:虽然以下解决方案有效,但有一个更简单的方法。见下文。

这是我想出来的,我希望它能派上用场--对你或其他任何人:

代码语言:javascript
复制
$('#element').attr('style', function(i, style)
{
    return style && style.replace(/display[^;]+;?/g, '');
});

这将删除该内联样式。

我不确定这是你想要的。您想要覆盖它,正如前面所指出的,$('#element').css('display', 'inline')很容易做到这一点。

我正在寻找的是一种完全删除内联样式的解决方案。我需要在我正在编写的插件中使用它,在这个插件中,我必须临时设置一些内联CSS值,但希望稍后删除它们;我希望样式表能够收回控制权。我可以通过存储它的所有原始值,然后将它们放回内联来做到这一点,但这个解决方案对我来说要干净得多。

下面是插件格式:

代码语言:javascript
复制
(function($)
{
    $.fn.removeStyle = function(style)
    {
        var search = new RegExp(style + '[^;]+;?', 'g');

        return this.each(function()
        {
            $(this).attr('style', function(i, style)
            {
                return style && style.replace(search, '');
            });
        });
    };
}(jQuery));

如果在脚本之前的页面中包含此插件,则只需调用

代码语言:javascript
复制
$('#element').removeStyle('display');

这应该能起到作用。

更新:我现在意识到所有这些都是徒劳的。您可以简单地将其设置为空:

代码语言:javascript
复制
$('#element').css('display', '');

它将自动为您删除。

下面是the docs的一句话

如果样式属性已经被直接应用,无论是在

样式属性中,通过$('#mydiv').css('color', '').css()方法,还是通过对样式属性的直接DOM操作,jQuery将样式属性的值设置为空字符串-例如$('#mydiv').css('color', '')-将该属性从元素中删除。但是,它不会删除在样式表或<style>元素中使用CSS规则应用的样式。

我不认为jQuery会在这里施展任何魔法;it seems the style object does this natively

票数 393
EN

Stack Overflow用户

发布于 2010-03-18 03:18:02

.removeAttr("style")去掉了整个样式标签...

.attr("style")来测试值并查看是否存在内联样式...

.attr("style",newValue)将其设置为其他值

票数 168
EN

Stack Overflow用户

发布于 2013-01-16 23:42:58

删除内联样式(由jQuery生成)的最简单方法是:

代码语言:javascript
复制
$(this).attr("style", "");

内联代码应该消失,并且您的对象应该适应CSS文件中预定义的样式。

对我很管用!

票数 28
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2465158

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档