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

时间:2011-07-13 11:41:30

标签: javascript jquery jquery-mobile

我想通过将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);}

1 个答案:

答案 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