我有一个日历,我试图在本月任何一天的鼠标悬停时突出显示星期六到星期六......所以如果你将鼠标悬停在 5 月 7 日星期一,它将突出显示 5 日星期六 - 12 日星期六。
我已经通过以下方式解决了这个问题。日历是用php动态生成的,所以每一天都是这样的:
<td class="calendar-day week_number_' . $this_week_number . '">
<div class="hello" id="day_' . $list_day . '"><div class="day-number">' . $list_day . '</div>'
</td>
'week_number_ . $this_week_number'
为每个星期六到星期六生成,并且 2 周共享的星期六同时应用了这两个类,例如一年中的第一个可用周将是week_number_1
(这是一个度假小屋,因此并非所有周都开放)。$list_day
是为其他地方的每一天生成的日期。
使用页面底部的以下 jquery 进行突出显示:
$('.hello').mouseover(function() {
var day = $(this).attr('id');
$.post('/modules/calendar/get_week_number2', { month:" . $month . ", day:day, year:" . $year . " }, function(data) {
$('.calendar-day').siblings('.week_number_'+data).css('background', 'yellow');
});
});
$('.hello').mouseleave(function() {
var day = $(this).attr('id');
$.post('/modules/calendar/get_week_number2', { month:" . $month . ", day:day, year:" . $year . " }, function(data) {
$('.calendar-day').siblings('.week_number_'+data).css('background', 'red');
});
});
这是在 Codeigniter 中完成的,所以这个 jquery 被生成并插入到页面底部,只是为了解释那里的 php 变量。最后get_week_number2
是确定要突出显示哪一周的功能...
public function get_week_number2() {
$month = $_POST['month'];
$day = str_replace("day_", "", $_POST['day']);
$year = $_POST['year'];
$date = date('Y-m-d H:i:s', mktime(0,0,0,$month,$day,$year));
$date2 = strtotime($date);
foreach($this->weeks_in_year() AS $week_number => $week)
{
if($date2 > strtotime($week['from']) AND $date2 < strtotime($week['to']))
{
echo $week_number;
}
}
}
$this->weeks_in_year()
是另一个在一年中生成一系列星期的函数......但我认为不需要在这里......它已经变得太长了!
所以我的问题是,是的,这行得通,但没有更好的方法吗?我错过了什么吗?