1

我正在开发 Web 应用程序,在这个应用程序中我使用了 jquery datepicker 插件。我使用日期选择器作为内联日期选择器。当我选择一个日期时,我试图删除一个 css 类ui-state-highlight,但没有反映在 datepicker 中。

    $("#start_date").datepicker({
    beforeShowDay: greySelectedDateRange, 
    maxDate: 0,
    onSelect: function (dateText, inst) {
        console.log(dateText);
        var toDaysDate = getCurrrentDate('mdy'); //function returning current date
        console.log(toDaysDate);
        //When the selected date is equal to current date 
        if (dateText == toDaysDate) {
            $(this).find('a.ui-state-active')
                   .removeClass('ui-state-highlight')
                   .find('.ui-datepicker-today a')); 
             //$(this).datepicker("refresh");
            //console.log($(this));
        }
    }
});

当我看到控制台console.log($(this));时,它已被删除,但是当我检查时,css class( ui-state-highlight) 仍然存在,请建议我一个解决方案。

提前致谢。

4

3 回答 3

2

@Johan 和 @Stano 建议的方法有效 - 但是一旦您更改月份然后回到当前月份,今天的亮点就会返回。这个轻微的修改解决了这个问题:

$(function() {
   $( ".datepicker" ).datepicker({    
     beforeShow: function(input, inst) {clearToday(inst)},
     onChangeMonthYear: function(year, month, inst) {clearToday(inst)}
   });

   function clearToday(inst) {
        setTimeout(function() {
            inst.dpDiv.find('a.ui-state-highlight').removeClass('ui-state-highlight');
        }, 10);
}

我发现我必须将超时时间减少到 10,否则一天的亮点会短暂闪烁并且可见。

于 2014-11-20T23:28:20.230 回答
1

尝试

inst.dpDiv.removeClass('ui-state-highlight');

inst.dpDiv是生成的日期选择器 div。

http://jsfiddle.net/abhMH/2/

于 2012-10-02T12:55:07.857 回答
0

我想知道他们是否在 onSelect 被触发后添加了 CSS 类。

您可以做的一件事是检查为 设置的属性,ui-state-highlight然后在代码的其他地方覆盖它们:

.ui-state-highlight {
  margin: 0 !important;
}
于 2012-10-03T11:12:11.293 回答