2013-05-11 45 views
14

我在jQuery UI小部件中工作很忙,主題變得很難,因爲我需要解決一些問題。可以將整個css「.class」作爲!的重要特徵嗎?

考慮這個問題:

<div id="node" class="ui-widget"> 
    <div class="ui-widget-content"> 
    </div> 
</div> 

那麼這個jQuery

<script> 
$(function() { 
     $('#node').hover(function(){ 
      $(this).toggleClass("ui-state-error"); 
     }); 
}); 
</script> 

我想的UI狀態,錯誤是嵌套DIV重要!這是僞代碼,但我發現這種情況發生的大型例子,其中容器具有css交換和兒童(basicaly)忽略它。更糟糕的是,如果我想能夠覆蓋jQuery中的「backgroundcolor = ui-state-error:background-color知道100%,這一切都不會發生,因爲我不知道」一定是這樣的背景下是有問題的元素中的重要一個。

這裏是一個很好的例子的小提琴http://jsfiddle.net/WCuYH/1/

編輯我要推薦這個問題被關閉,因爲還沒有任何試圖答案,只有太多的原始帖子的本質漂移

+1

不,使整個HTML類「!important」的唯一方法是在CSS中的每個屬性設置之後添加'!important'聲明。什麼是監督? – 2013-05-11 20:58:41

+2

您應該閱讀[CSS特異性](http://coding.smashingmagazine.com/2007/07/27/css-specificity-things-you-should-know/),以及它如何工作,然後嘗試適用於全班的重要課程。 – adeneo 2013-05-11 21:08:40

+2

還值得注意的是!重要的應該是**非常節儉地使用。通常只有使用它的人才是瀏覽器供應商,比如Mozilla。 – mlissner 2013-05-11 21:12:52

回答

12

首先關閉!important適用於一個特定的declar在CSS規則中。它不適用於一個班級。所以,「不」,你不能上課!important

其次,!important只是CSS特性的一部分。你也可以使用其他方法來使規則成爲一個更具體的規則來具有優先級(比如在父鏈中引用一個id,而不僅僅是這個類)當我編寫CSS時,使用!important是我最後的可能選擇 - 我寧願用其他特定解決方案解決覆蓋問題。通常,如果你控制所有CSS,這很容易避免使用!important。如果你必須重寫一些你不能控制的CSS,那麼有時候它很方便。

如果你的jQuery代碼要在對象上切換一個類,那麼你將不得不制定你的CSS規則,以便添加/刪除這個類會導致正確的CSS聲明優先。使用該部分,您需要向我們展示HTML和CSS的相關部分,以便我們能夠就如何解決優先級/特定性問題提供建議。

+0

'!important'適用於一個CSS *聲明*,而不是規則。例如,在'a {color:blue;背景:white!important}',只有'background'的聲明變得重要;同一規則中的另一個聲明不受影響。 – 2013-05-11 22:09:36

+0

我想應用的東西,將導致所有懸停的影響,使子div有「藍色」背景(在這個jQuery UI主題是藍色)懸停它涉及到235行jQueryUIGrid插件我使http:///jsfiddle.net/WCuYH/ – MacLovin 2013-05-11 22:19:05

+0

對不起,它是http://jsfiddle.net/WCuYH/1/行2和4(索引1,3)正確地將鼠標懸停在行上的藍色。行1和3(索引0,2)無法執行此操作,因爲子樣式將覆蓋它。 – MacLovin 2013-05-11 22:20:29

相關問題