2012-03-13 116 views
1

我目前正在嘗試更改jQuery UI日期選擇器內特定日期的CSS。如果日期被視爲假期(即它與給定日期數組中的日期相匹配),我想要移除默認圖像並對該給定元素添加一些小調整。我使用beforeShowDay回調函數,像這樣(週末都標有周末班)添加一個「假期」類的日期視爲假期:Jquery UI - Datepicker onChangeMonthYear

beforeShowDay: function(oDate) { 
     mResult = oHolidays.fnLookupDate(oDate); 
     if (mResult != null) // if the date matched a holiday, mResult is the description 
      return [false, 'holiday', mResult]; 
     else if (oDate.getDay() == 0 || oDate.getDay() == 6) // weekends 
      return [false, 'weekend']; 
     else // normal day 
      return [true, '']; 
    } 

從理論上說,應用類,每個節日的TDS應該讓我在日期選擇器中爲每個假期指定我想要的任何樣式。然而,我沒有在課堂上使用過的造型。 UI樣式優先。 我當然可以通過從UI css文件中刪除css樣式來解決問題,但從設計的角度來看,這是一個非常糟糕的方法。下面是我指定的CSS(指定重要的沒有任何改變!):

td.holiday { 
    background-color: #CC9900; 
    background-image: none; 
    color: #990000; 
    font-weight: bolder; 
} 

我試圖通過應用CSS作爲內嵌樣式的日期選擇器所產生的TD節點中的一個節點,以「破解它」(更具體的,更內在的規則應該具有更高的優先級CSS),做這樣的事情:

onChangeMonthYear: function(dateText, inst) { 
     $('.holiday').children('a').css({'background-color': 'blue', 'background-image': 'none', 
             color: '#990000', 'font-weight': 'bolder'}); 
    } 

似乎顯示的日期選擇器前onChangeMonthYear將運行該功能。而且,由於發生這種情況,日期選擇器的CSS會覆蓋我正在嘗試執行的操作。如果我只是在打開日期選擇器的情況下在Firebug中運行這段代碼,那麼它可以很好地工作。

是否有無論如何使用.css()在顯示月份後更改日期選擇器的css?我想避免嘗試更改jQuery UI css或js文件。即使如此,這似乎是一個糟糕的設計。任何其他想法?

回答

0

您列出的CSS,特別是帶有!重要的,應覆蓋默認樣式。只要樣式在默認樣式之後,它們應該覆蓋而不會有任何問題。 JQuery UI甚至不應該在TD中放置任何內聯,這將要求您使用!important。

你有什麼機會在某個地方舉個例子嗎?這可能很簡單。只要你在正確的日期在DOM中的類,它應該是小CSS,沒有有趣的東西。

+0

馬修,你說得對,當你說使用!很重要。我之前嘗試過,但我使用td.holiday作爲我的選擇器。相反,我應該使用td.holiday a。 謝謝 – 2012-03-14 13:29:49