Jquery 有没有办法让元素退出css?

Jquery 有没有办法让元素退出css?,jquery,css,Jquery,Css,我有一个通用的css,它有很多样式表。我想使用jquery告诉一个表,我必须忽略“all.css”规则,只做自己的事情。我如何做到这一点?谢谢大家 当CSS/jQuery可以做得很简单时,为什么要重写或覆盖规则呢 table:not([id="excludeThisTable"]) { /* style for any table exept #excludeThisTable */ } 我相信jQuery可以管理这个选择器。或 我的选择是CSS+polyfill:(时间比jQ

我有一个通用的css,它有很多样式表。我想使用jquery告诉一个表,我必须忽略“all.css”规则,只做自己的事情。我如何做到这一点?谢谢大家

当CSS/jQuery可以做得很简单时,为什么要重写或覆盖规则呢

    table:not([id="excludeThisTable"]) 
{
   /* style for any table exept #excludeThisTable */
}
我相信jQuery可以管理这个选择器。或

我的选择是CSS+polyfill:(时间比jQuery短)
更新CSS中的选择器,为olderbrowser添加polyfill,并继续处理其余部分

您可以使用:not选择器,它现在是CSS3标准

像这样使用它:

table:not(.old-style) {
    width: 666%;
    color: blue;
    background-color: red;
}

当然,不要使用这些值:p

我会告诉样式不要应用于表(:not operator),或者强制样式只应用于所需的元素(不是所有表,但可能应用于具有类的表),从而更正CSS

这是可行的,但很糟糕:

(function($){
    $.fn.getStyleObject = function(){
        var dom = this.get(0);
        var style;
        var returns = {};
        if(window.getComputedStyle){
            var camelize = function(a,b){
                return b.toUpperCase();
            }
            style = window.getComputedStyle(dom, null);
            for(var i=0;i<style.length;i++){
                var prop = style[i];
                var camel = prop.replace(/\-([a-z])/g, camelize);
                var val = style.getPropertyValue(prop);
                returns[camel] = val;
            }
            return returns;
        }
        if(dom.currentStyle){
            style = dom.currentStyle;
            for(var prop in style){
                returns[prop] = style[prop];
            }
            return returns;
        }
        return this.css();
    }
})(jQuery);

$(document).ready(function(){
    // Disable stylesheets
    $('link[rel="stylesheet"]').prop('disabled', true);
    // Get current styles
    var style=$('#mytable').getStyleObject();
    // Enable stylesheets
    $('link[rel="stylesheet"]').prop('disabled',false);
    // Apply saved styles
    $('#mytable').css(style);
});
(函数($){
$.fn.getStyleObject=函数(){
var dom=this.get(0);
var风格;
var返回={};
if(window.getComputedStyle){
var camelize=函数(a,b){
返回b.toUpperCase();
}
style=window.getComputedStyle(dom,null);

对于(var i=0;i我建议使用一个
id
,它覆盖常规css选择器并填充所有默认样式

#table {
    //default styles
}

@CarlosViniciusVieiraRodrigu这些答案是旧的,有新的possiblities@Harsh如果您不想在
:not()下定义所有主要CSS,那么这可能是个问题。(看起来IE8是新的IE6:/)
selector,您也可以采用蛮力方法,并在表的选择器下包含浏览器的样式表,以将所有内容重置为默认值。(也就是说,这是一种非常笨拙的方法,如果您需要将站点范围的样式命名为不适用于某些内容,则命名这些样式会更好。)坦率地说,人们现在应该放弃XP。XP用户无法超越IE8。我知道这将是一个缓慢的过渡,可能会使IE8成为新的IE6,但情况仍然比IE6时代要好得多……希望IE10能尽快赶上。我相信jQuery选择器扩展只用于jQuery DOM查询。听起来像是作者在尝试的问题将DOM节点从接收CSS样式中排除,而不是将其从jQuery查询中排除。@Corion它也是一个CSS选择器。虽然语法可能有点不同。@millimoose但jQuery没有在CSS 2.1中添加对它的支持,是吗?这个答案听起来像是这样。我是否误解了这个问题?我建议在这里排除通过CSS或jQuery设置一个小表格的样式。对于较旧的浏览器,可以使用polyfills使该选择器工作。要做的一件事是使用选择器:not()它可以来自任何属性。我想澄清的是,据我所知,jQuery本身并不能让CSS2.1浏览器突然正确解析CSS3文件
在使用CSS2.1浏览器查看的CSS文件中,除了jQuery之外,您还需要类似的东西。如果您将JavaScript与jQuery一起使用,您仍然可以选择这样的元素,但此答案的代码示例是CSS,而不是JavaScript。请记住,较旧的浏览器将不支持此功能。如果支持数据外,您只需要担心这一点e浏览器是一个明确的要求。你可以在这里找到一个受支持的浏览器列表:我在去oups之前回答了同样的问题。有polyfill甚至jQuery模仿了这个选择器。-1表示错误使用重要。如果你做得对,该id的css无论如何都应该更具体,因为OP肯定是针对general table标记的,而ch的优先级较低。我不太清楚这里发生了什么……我没有访问css文件的权限,它正在设置我不想设置样式的表的样式。这就是我尝试“选择退出”的原因从强制样式中删除我的表,并将我自己的类添加到其中。希望这能让它更清晰一些。您可以在表上放置一个ID,然后以这种方式或通过
table#mytable{styles here}应用样式
,这可能会覆盖其他样式表中的样式。使用浏览器的调试功能应该能够告诉您他们用于定位表的选择器,并且只需在选择后使用相同的选择器,或者使用更具体的选择器即可。