我尝试使用多选插件突出显示jQuery UI Datepicker中的水平天数。要突出显示,请使用:before
标记的:after
和a
个伪元素。
.ui-state-highlight a:before,
.ui-state-highlight a:after {
content: "";
display: inline-block;
position: absolute;
width: 12px;
height: 30px;
background: #e84332;
display: none;
}
.ui-state-highlight a:before {
left: -7px;
}
.ui-state-highlight a:after {
right: -8px;
}
只需要根据高亮一天的位置显示:before
或:after
元素。但是,每次渲染后,datepicker都会删除样式。请帮助我理解如何在日期选择器渲染后运行显示伪元素的函数。
水平选择图片:
JSFiddle:
答案 0 :(得分:0)
看看这个答案:
我写了一个小演示来做到这一点......
我创建了一个包含$ .datepicker扩展名的对象文字,然后在$ .datepicker和我的对象上执行$ .extend。
您可以在此处查看:http://jsfiddle.net/NHN4g/4/
这是扩展本身:
(function($){ var datepickerExtensions = { _oldAdjustDate: $.datepicker._adjustDate, _adjustDate: function(id, offset, period) { var target = $(id); var inst = this._getInst(target[0]); var afterAdjustDate = this._get(inst, 'afterAdjustDate'); this._oldAdjustDate(id, offset, period); if(afterAdjustDate && typeof afterAdjustDate === 'function'){ afterAdjustDate(id, offset, period); } } } $.extend($.datepicker, datepickerExtensions); })(jQuery);
演示:
(HTML)
<link rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.16/themes/base/jquery-ui.css" type="text/css" media="all"> <div class="demo"> <p>Date: <input type="text" id="datepicker"></p> </div><!-- End demo -->
(JavaScript的)
var changed = false; $("#datepicker").datepicker({ afterAdjustDate: function(i,o,p){ if(!changed){ $('.ui-datepicker-month').css('color', '#f00'); } changed = !changed; } });
形成这个问题: Proper way to add a callback to jQuery DatePicker
你可以像他一样编写自己的扩展程序。