2012-05-22 140 views
1

我有一個div,我已經添加了邊框樣式。但是,當我嘗試添加一個CSS類到它的div樣式。Css/jquery div樣式

if ($("#input-whatmask").val() != '') 
     { 
      if(!searchReg.test($("#input-whatmask").val())){ 
       $("#input-whatmask").addClass("errorinput").after('<span class="error">Enter a valid value.</span>'); 
       hasError = true; 
       return false; 
      } 
     } 

任何人都確認這樣做的正確方法?

+0

我認爲這屬於http://meta.codereview.stackexchange.com –

+0

請發佈該div的樣式表和相關的html片段。 – oezi

+0

請添加你的代碼jdfiddle。 – Rizstien

回答

1

我敢肯定你的問題是因爲css風格的優先。一個id的樣式(#input-whatmask)比一個類(.errorinput)更重要,所以沒有什麼會改變。爲了糾正這種情況,將你的風格聲明爲#input-whatmask.errorinput而不是僅僅是.errorinput,所以它會被優先使用(id類比id更具體)。

來解釋它是如何工作究竟(報價this great article):

特異性是通過計算各個組成部分你的CSS 和表達它們的形式(A,B,C,d)計算。這將更清晰地以 爲例,但首先是組件。

  • 元素,僞元素:d = 1 - (0,0,0,1)
  • 類,僞類,屬性:C = 1 - (0,0,1,0)
  • ID:b = 1 - (0,1,0,0)
  • 聯樣式:A = 1 - (1,0,0,0)

的ID是更具體的大於一類是更比元素更具體。在側

+0

完美謝謝所有..... – felix001

0

樣式div標籤,例如:

<div style="border: 1px solid blue;"></div> 

將連接到div一類中重寫樣式,例如這個div仍會有藍色邊框:

<div class="myClass" style="border: 1px solid blue;"></div> 

...

.myClass 
{ 
    border: 1px solid red; 
} 

但是這個div將哈五個紅色的邊框:

<div class="myClass" style="border: 1px solid blue;"></div> 

...

.myClass 
{ 
    border: 1px solid red !important; 
} 

見這個js小提琴:http://jsfiddle.net/jtVRK/

0

你想這樣

if ($("#input-whatmask").val() != '') 
{ 
    if(!searchReg.test($("#input-whatmask").val())){ 
     $("#input-whatmask").attr("class","errorinput").after('<span class="error">Enter a valid value.</span>'); 
     hasError = true; 
     return false; 
    } 
} 

如果使用ATTR()而不是addClass(),則樣式將被覆蓋。 attr()將舊類名稱更改爲newClass名稱,addClass()將newClass添加到oldClass。

or


使用!important對於具有要在newCalss覆蓋與您相同的代碼屬性


or

if ($("#input-whatmask").val() != '') 
    { 
     if(!searchReg.test($("#input-whatmask").val())){ 
      $("#input-whatmask").removeClass("oldClass").addClass("errorinput").after('<span class="error">Enter a valid value.</span>'); 
      hasError = true; 
      return false; 
     } 
    }