【问题标题】:jQuery UI Datepicker - Adding an extra class to change colourjQuery UI Datepicker - 添加一个额外的类来改变颜色
【发布时间】:2014-11-06 16:35:21
【问题描述】:

我正在使用 jQuery UI Datepicker 来呈现日历。从 mySQL 数据库中绘制数据我想用不同的颜色显示一些日期。

日历放在页面上

<div id="calendar"></div>

脚本是

$(function() {
var closedDates = <?php echo json_encode($closedarray); ?>;
    function closed(date) {
        ymd = date.getFullYear() + "-" + ("0"+(date.getMonth()+1)).slice(-2) + "-" + ("0"+date.getDate()).slice(-2);

        if ($.inArray(ymd, closedDates) < 0 ) {
            return [true, "", "Available"];
        } else {
            return [true, "closed", "Closed"];
        }
    }

    $('#calendar').datepicker({
        beforeShowDay: closed, 
        dateFormat: 'dd-mm-yy',
        numberOfMonths: 4
    });
});

默认情况下,ThemeRoller 会在每个日期单元格上放置一个图像,但我不需要它,所以我简化了 CSS,只在单元格上放置一个纯色。 (我也回滚了,看看我是否在这个更改中造成了问题,但没有什么不同。)

根据 Datepicker 文档,“beforeShowDay”返回一个数组,其中包括“添加到日期单元格的 CSS 类名或默认演示文稿的“”。在我的示例中,该类名是“关闭的”。所以我在 CSS 中多加了一行:

.closed { background:red }

但是,它并没有将主单元格着色为红色,而是在其周围放置了一个小的红色边框。

这到底是怎么工作的?

【问题讨论】:

    标签: css jquery-ui datepicker


    【解决方案1】:

    该类将应用于&lt;td&gt;&lt;td&gt;里面的&lt;a&gt;还有另外一个背景,大多隐藏了&lt;td&gt;的背景。

    只需将您的 CSS 选择器更改为以 &lt;a&gt; 为目标,如下所示:

    $(function() {
      var closedDates = ["2014-11-06"];
    
      function closed(date) {
        ymd = date.getFullYear() + "-" + ("0" + (date.getMonth() + 1)).slice(-2) + "-" + ("0" + date.getDate()).slice(-2);
        console.log(ymd)
        if ($.inArray(ymd, closedDates) < 0) {
          return [true, "", "Available"];
        } else {
          return [true, "closed", "Closed"];
        }
      }
    
      $('#calendar').datepicker({
        beforeShowDay: closed,
        dateFormat: 'dd-mm-yy'
      });
    });
    .closed a {
      background: red !important;
    }
    <link href="http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css" rel="stylesheet" />
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <script src="http://code.jquery.com/ui/1.9.2/jquery-ui.js"></script>
    <div id="calendar"></div>

    【讨论】:

    • 谢谢 TJ。发生了一些非常奇怪的事情。看起来我所要做的就是修改 CSS。我这样做了,但没有用。所以我通过复制和粘贴你所有的代码制作了一个小测试文件,然后从那里开始工作。您使用的 jquery-ui.css 和 jquery-ui.js 文件根本不起作用,所以我替换了我自己的。当我第一次打开页面时,11 月 6 日确实是红色的。单击任何其他日期,11 月 6 日将变为黄色(“今天”的颜色代码)。 6 No 是一个特例,所以我将 closedDates 变量更改为不同的日期。然后它根本不起作用。
    • 继续,因为我的空间用完了。我认为您提供的额外 CSS 代码可能仅适用于“今天”,而不适用于任何其他日期。
    • @TrapezeArtist 只需使用!important 锤击默认 css。检查更新的答案。
    • 只有一个小字,但“!important”很重要。问题解决了。非常感谢。你不会相信这在过去一天左右给我带来了多大的痛苦。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-06-23
    • 1970-01-01
    • 2013-05-23
    • 2021-06-13
    • 1970-01-01
    • 2014-12-20
    • 1970-01-01
    相关资源
    最近更新 更多