2012-03-13 120 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