我想通过将div id
从日历创建功能添加到标题文本来在日程表标题中设置日期。
我得到id
这样的$('.dayNumberCellValue').attr('id');
,但是我有一个问题,当你在日历中点击日期时,我得到所有日期的相同日期,“27”(这是开始日期的我的日历)。在我看来,$('.dayNumberCellValue').attr('id');
在同一个日期,但为什么,如果他必须在所有单元格中只显示“27”日期,日历如何正常工作?
点按功能 - >>>
$('.div-cell').tap(function() {
var i;
var myDate2;
for (i = 0; i < 42; i++) {
$('#' + i + 'dayCell').removeClass('tapped');
}
$(this).toggleClass(
'tapped');
if($(this).hasClass('tapped')){
myDate2 = $('.dayNumberCellValue').attr('id');
$('#MSchedule header h4').text("S - "+myDate2);}
});
日历创建 - &gt;
function setCalendar() {
var cTime = new Date();
var myDate = months[cTime.getMonth()] + " " + cTime.getFullYear();
var myDate2 = cTime.getDate() + " " + months[cTime.getMonth()];
$('#MCalendar header h4').text(myDate);
$('#MSchedule header h4').text("Schedule - " + myDate2)
var monthView = new Array(42);
var firstDayOfMonth = new Date(cTime.getFullYear(), cTime.getMonth(), 1);
while (firstDayOfMonth.getDay() != 1) {
firstDayOfMonth.addDays(-1);
}
var i;
for (i = 0; i < monthView.length; i++) {
startDate = new Date(firstDayOfMonth);
monthView[i] = startDate.addDays(i);
}
for(var day=0;day<monthView.length;day++){
var needDay=monthView[day].getDate();
var cell = $('#'+day+'dayCell');
var content = '<div class="dayNumberCellValue" id=' +needDay+ '>'
+ monthView[day].getDate()
+ '</div>';
cell.append(content);}
答案 0 :(得分:3)
这一行:
myDate2 = $('.dayNumberCellValue').attr('id');
将始终获取第一个匹配元素的id
值(文档中第一个带有“dayNumberCellValue”类的元素,从顶部开始)。
您尚未显示标记,但如果您想要的元素位于tapped元素内,那么您可以在tap
处理程序中找到它:
myDate2 = $(this).find('.dayNumberCellValue').attr('id');
查找 this
元素中的第一个“dayNumberCellValue”元素,该元素随后将是您正在观看tap
事件的元素。
非主题:你说你总是得到“27”,这表明你使用“27”作为元素的id
。虽然这是recently been allowed(HTML5),但它是invalid in HTML 4 and earlier,仍然是invalid in CSS。我建议不要使用以数字开头的ID。事实上,我认为我可能会使用data-*
attribute来存储日期而不是id
。