2012-03-13 4 views
1

В настоящее время я пытаюсь изменить css определенных дат внутри jQuery UI datepicker. Если дата считается праздником (т. Е. Она соответствует дате в заданном массиве дат), я хотел бы удалить изображение по умолчанию и добавить некоторые небольшие настройки к данному элементу. Добавить класс «праздник» с датами считаются праздниками, используя функцию обратного вызова 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, '']; 
    } 

Теоретически, применяя класс к с.в. каждого праздника должен позволить мне указать любой стиль, который я хочу для каждого праздника в datepicker. Тем не менее, ни один из стилей, которые я использую в классе, на самом деле не появляется; стиль UI имеет приоритет. Я мог бы, конечно, решить проблему, удалив стили css из файла css UI, но это очень плохой подход с точки зрения дизайна. Вот CSS Уточняю (с указанием важно ничего не изменится!):

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

Я пытался «взломать его» путем применения CSS в качестве встроенного стиля к узлам в пределах Td узлов, порожденных DatePicker (более конкретно, более внутренние правила должны иметь более высокий приоритет CSS) и сделать что-то вроде этого:

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

кажется, что onChangeMonthYear будет запускать эту функцию перед отображением DatePicker. И так как это происходит, css datepicker переопределяет то, что я пытался сделать. Если я просто запускаю этот бит кода в Firebug с открытым датпиккером, он отлично работает.

Можно ли использовать .css() для изменения css datepicker после отображения месяца? Я хочу избежать попытки изменить jQuery UI css или js-файлы. Тем не менее, это кажется плохим дизайном. Любые другие идеи?

ответ

0

CSS, который вы указали, особенно с важными там, должен переопределять стили по умолчанию. До тех пор, пока стили приходят после стандартных по умолчанию, они должны переопределяться без каких-либо проблем. Пользовательский интерфейс JQuery даже не должен помещать что-либо встроенное в TD, которое потребует от вас использования! Важно.

Любой шанс, что у вас есть пример где-то? Это, наверное, что-то очень простое. Пока у вас есть классы в DOM в правильные даты, это должен быть небольшой CSS без каких-либо забавных вещей.

+0

Мэтью, вы были правы, когда говорили, что используете! Важно. Я пробовал это раньше, но я использовал td.holiday как мой селектор. Вместо этого я должен был использовать td.holiday a. Спасибо –