问题在于,由于我无法理解的原因,jQueryUI 在构建日期选择器时发生了变化。在您最初调用创建日期选择器时,jQueryUI 仅构建以下内容:
<div id="ui-datepicker-div" class="ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all ui-weekpicker"></div>
在第一次显示之前,它不会构建 datepicker 控件的其余部分。之后控件的DOM结构就正常添加了。
因此,$('.ui-weekpicker .ui-datepicker-calendar tr') 的长度为 0,因此未附加 mousemove 和 mouseleave 处理程序。
我想出的解决方案是更改选择器以将事件委托给$('.ui-weekpicker')(并将.live()更改为.on()):
$('.ui-weekpicker').on('mousemove', 'tr', function () {
$(this).find('td a').addClass('ui-state-hover');
});
$('.ui-weekpicker').on('mouseleave', 'tr', function () {
$(this).find('td a').removeClass('ui-state-hover');
});
这是一个更新的小提琴:http://jsfiddle.net/NCHtH/19/