jQuery插件正在应用内联样式(display:block).我觉得很懒,想用display:none来替代它.

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

推荐答案

Update:虽然下面的解决方案有效,但还有一个简单得多的方法.请参见下面的内容.


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

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

这应该能奏效.


Update:我现在意识到这一切都是徒劳的.

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

它会自动为您移除.

下面是the docs句话中的一句话:

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

我不认为jQuery在这里有什么神奇之处;it seems the style object does this natively.

Jquery相关问答推荐

在 Mastodon 中将 jQuery 添加到 Rails 6

为什么我不能在 window.onload 事件的处理程序中将 $ jQuery 对象作为参数传递?

jquery如何判断ajax调用的响应类型

如何像这样通过 $.ajax ( serialize() + extra data ) 添加数据

jQuery:获取所选单选按钮的父 tr

jQuery从下拉列表中删除一个选项,给定选项的文本/值

Google Maps API v3 infowindow 关闭事件/回调?

如何在jQuery中 Select 具有特定ID的所有元素?

如何在不导致页面滚动的情况下删除位置哈希?

Zepto 和 jQuery 2 有什么区别?

blueimp 文件上传插件中的 maxFileSize 和 acceptFileTypes 不起作用.为什么?

如何将数组传递给 jQuery .data() 属性

用作 Google Chrome 书签

如何使用 JQuery 获取 GET 和 POST 变量?

5秒后jQuery自动隐藏元素

Bootstrap datepicker Select 后隐藏

如何使用 jQuery 取消设置元素的 CSS 属性?

在未实现接口 FormData 的对象上调用附加

jQuery attr 与props ?

$.ajax 的成功和 .done() 方法有什么区别