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

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


当前回答

你可以使用jQuery的css方法设置样式:

$('something:visible').css('display', 'none');

其他回答

.removeAttr("style")来去掉整个style标签…

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

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

如果显示是你的样式中唯一的参数,你可以运行这个命令来删除所有的样式:

$('#element').attr('style','');

这意味着如果你的元素之前是这样的:

<input id="element" style="display: block;">

现在你的元素看起来是这样的:

<input id="element" style="">
$("[style*=block]").hide();

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


这是我想到的,我希望这对你或其他人有用:

$('#element').attr('style', function(i, style)
{
    return style && style.replace(/display[^;]+;?/g, '');
});

这将删除内联样式。

我不确定这是你想要的。你想要重写它,正如已经指出的,这很容易通过$('#element').css('display', 'inline')来完成。

我正在寻找的是一个解决方案,以删除内联风格完全。 我需要这个插件,我正在写的地方,我必须临时设置一些内联CSS值,但后来想删除它们;我想让样式表收回控制权。 我可以通过存储它的所有原始值,然后将它们放回内联来做到这一点,但这个解决方案对我来说感觉更干净。


下面是它的插件格式:

(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));

如果你在脚本之前将这个插件包含在页面中,你就可以直接调用它

$('#element').removeStyle('display');

这样就可以了。


更新:我现在意识到这一切都是徒劳的。 你可以简单地设置为空白:

$('#element').css('display', '');

它会自动为你删除。

以下是文件中的一段话:

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

我不认为jQuery在这里有任何魔力;似乎style对象本身就是这样做的。

$('div[style*=block]').removeAttr('style');