使用jQuery从select中删除CSS

时间:2009-09-02 20:55:32

标签: jquery css

我有一个以上的css应用于输入,一个默认和其他自定义。我想禁用css默认值而不禁用其他默认值。我试图删除:

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

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

那些方法,删除所有的CSS。我怎么能用jQuery做到这一点?

5 个答案:

答案 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,并可能通过切换课程来切换样式。