Jquery日历 – .attr(’id’)获取错误的值

我想通过将日历创建function中的div id到标题文本来在日程表标题中设置日期。

我得到像这样的$('.dayNumberCellValue').attr('id'); ,但我有一个问题,当你在日历中点击日期时,我得到所有日期的相同日期,“27”(这是我的日历的开始日期)。 在我看来,在$('.dayNumberCellValue').attr('id'); 同一个日期,但为什么,如果他必须在所有单元格中只显示“27”日期,日历如何正常工作?

点按function – >>

  $('.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);} }); 

日历创建 – >

 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 = '
' + monthView[day].getDate() + '
'; cell.append(content);}

这一行:

 myDate2 = $('.dayNumberCellValue').attr('id'); 

将始终获取第一个匹配元素的id值(文档中具有类“dayNumberCellValue”的第一个元素,从顶部开始)。

您没有显示标记,但如果您想要的元素位于tapped元素内,那么在您的tap处理程序中,您可以像这样找到它:

 myDate2 = $(this).find('.dayNumberCellValue').attr('id'); 

这将查找this元素中的第一个“dayNumberCellValue”元素, this元素将在您正在观看tap事件的元素上显示。


偏离主题 :你说你总是得到“27”,这表明你使用“27”作为元素的id 。 虽然最近允许 (通过HTML5),但它在HTML 4及更早版本中 无效 ,并且在CSS中仍然无效 。 我建议不要使用以数字开头的ID。 事实上,我认为我可能会使用data-*属性来存储日期而不是id