2012-10-02 99 views
1

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

$("#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类(ui-state-highlight)仍然存在,请建议我一个解决方案。

在此先感谢。

+0

如果这是你想要做的,我会改变这个问题,“在jquery日期选择器”删除今日日期的突出显示(即“UI状态高亮”类)。我搜索了很长时间才找到这个答案。 –

回答

1

尝试

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

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

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

+0

嗨Johan,已经检查过这个代码,仍然是一样的,这个改变没有反映出来,也试过了inst.dpDiv.removeClass('ui-state-highlight');与$(this).datepicker(“刷新”);;没有变化。 如果您有任何其他解决方案,请留下我的知识 –

+0

@ user665864一个丑陋的解决方案是将代码包装在'setTimeout'函数中。如果您在脚本生成html之后运行更改,则应该没问题。 – Johan

+0

hi Johan,我试着用剩下的所有其他选项,并且在迷失中使用了你使用setTimeout的解决方案,它终于工作了,非常感谢。 –

0

我不知道他们添加的CSS类ONSELECT被触发后。

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

.ui-state-highlight { 
    margin: 0 !important; 
} 
1

通过@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,否则当天的亮点闪烁在短暂并且是可见的。