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

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

最佳答案

更新:尽管以下解决方案有效,但是有一种更简单的方法。见下文。

这是我想出的,我希望这对您或其他任何人都派上用场:

$('#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', '');

它将自动为您删除。

这是the docs的报价:



我不认为jQuery在这里发挥了任何作用。 it seems the style object does this natively

09-25 17:04
查看更多