2009-09-02 220 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