2009-09-02 60 views
0

我有一个以上的CSS应用于输入,一个默认和其他自定义。我想禁用CSS默认,但不是其他人。我试图删除:使用jQuery从选择中删除CSS

$j('#teste').css("max-width", ""); 

$j('#teste').removeAttr("max-width"); 

这些方式,删除所有的CSS。我如何使用jQuery来做到这一点?

+1

removeAttr不是CSS ..它是标签的属性。 http://docs.jquery.com/Attributes/removeAttr – Aziz 2009-09-02 20:57:46

+4

我相信问题出在你的CSS而不是jQuery中。 – rogeriopvl 2009-09-02 20:58:54

回答

2

使用css类并添加/删除它们来控制样式。

$('#id').addClass('foo'); 

$('#id').removeClass('foo'); 
+0

我也试过了,但不行,我希望如此。 – Allice 2009-09-02 21:01:14

+0

errr你是怎么说的。它没有从元素中删除类?也许如果你可以发布更多的代码并阐述你的问题。 – redsquare 2009-09-02 21:13:30

2

$ .toggleClass()可以工作最好的,如果你有对于需要快速的默认应用后,然后去掉了“定制”的风格独特的类样式表。

$('selector').toggleClass('foo'); 

如果它不存在,将添加foo类,如果元素没有foo类,则删除它。见jQuery toggleClass documentation

如果你所有的造型是内联(),您可以使用removeAttr方法:

$('selector').removeAttr('style'); 
1

你不能(因为别人已经说过),删除通过样式表应用的造型。但是,您可以覆盖样式。例如,如果通过一个样式表应用最大宽度,你应该能够通过改变值或将其设置为“自动”覆盖它:

$('#teste').css("max-width", "999999px"); 

或可能:

$('#teste').css("max-width", "auto"); 

这是说,我同意其他帖子,最好的赌注可能只是解决你的CSS和可能切换样式切换一个类。

3

下面是我为我们的项目编写的一个简单扩展函数,它删除以前由$(...)。css()设置的内联CSS属性。它只改变'样式'属性 - 如果通过类设置样式,则需要删除整个类或重写样式。

您将它用作$(...)。removeCss('color','font-weight');

$.fn.removeCss = function() { 
    var removedCss = $.makeArray(arguments); 
    return this.each(function() { 
    var e$ = $(this); 
    var style = e$.attr('style'); 
    if (typeof style !== 'string') return; 
    style = $.trim(style); 
    var styles = style.split(/;+/); 
    var sl = styles.length; 
    for (var l = removedCss.length, i = 0; i < l; i++) { 
     var r = removedCss[i]; 
     if (!r) continue; 
     for (var j = 0; j < sl;) { 
     var sp = $.trim(styles[j]); 
     if (!sp || (sp.indexOf(r) === 0 && $.trim(sp.substring(r.length)).indexOf(':') === 0)) { 
      styles.splice(j, 1); 
      sl--; 
     } else { 
      j++; 
     } 
     } 
    } 
    if (styles.length === 0) { 
     e$.removeAttr('style'); 
    } else { 
     e$.attr('style', styles.join(';')); 
    } 
    }); 
}; 
7

我假设你有一个全球最大宽度设置,并要覆盖它#teste?无论哪种方式,这应该做你需要什么:

$j('#teste').css("max-width", "none"); 

正如其他人提到了这一点可以直CSS来实现:

#teste { 
    max-width: none; 
} 
+0

这是正确的答案,谢谢。 – 2015-12-24 14:16:20