我有一个以上的css应用于输入,一个默认和其他自定义。我想禁用css默认值而不禁用其他默认值。我试图删除:
$j('#teste').css("max-width", "");
和
$j('#teste').removeAttr("max-width");
那些方法,删除所有的CSS。我怎么能用jQuery做到这一点?
答案 0 :(得分:7)
我假设你有一个全局最大宽度设置,你想要覆盖它#teste
?无论哪种方式,这应该做你需要的:
$j('#teste').css("max-width", "none");
正如其他人所说,这可以用直接的CSS完成:
#teste {
max-width: none;
}
答案 1 :(得分:3)
这是我为项目编写的一个简单扩展函数,它删除了以前由$(...)。css()设置的内联CSS属性。它只改变'style'属性 - 如果通过类设置样式,则需要删除整个类或覆盖样式。
你用它作为$(...)。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(';'));
}
});
};
答案 2 :(得分:2)
使用css类并添加/删除它们来控制样式。
$('#id').addClass('foo');
$('#id').removeClass('foo');
答案 3 :(得分:2)
$ .toggleClass()可能效果最好,如果你有一个样式表,其中包含“自定义”样式的唯一类,需要在默认情况下应用,然后快速删除。
$('selector').toggleClass('foo');
如果foo类不存在,这将添加foo类,如果元素没有foo类,则删除它。请参阅jQuery toggleClass documentation
如果所有样式都是内联(),则可以使用removeAttr方法:
$('selector').removeAttr('style');
答案 4 :(得分:1)
您不能(正如其他人已经说过的那样)删除通过样式表应用的样式。但是,您可以覆盖样式。例如,如果通过样式表应用max-width,您应该可以通过更改值或将其设置为“auto”来覆盖它:
$('#teste').css("max-width", "999999px");
或可能:
$('#teste').css("max-width", "auto");
话虽如此,我同意其他帖子,最好的选择可能只是修复你的CSS,并可能通过切换课程来切换样式。