Jquery日历- .attr('id')得到错误的值

Jquery Calendar - .attr('id') get wrong value

本文关键字:错误 id 日历 Jquery attr      更新时间:2023-09-26

我想在日程表标题中设置日期,将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);}
                    });

创建日历->

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);}

这一行:

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

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

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

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

this元素中查找第一个"dayNumberCellValue"元素,该元素将是您正在观看tap事件的元素。


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