让元素拥有自己的变量?

时间:2013-05-28 22:09:05

标签: javascript jquery

我制作了一个列出月份的功能。

function genDate() {
        var d = new Date();

        var monthNames = [ "JAN", "FEB", "MAR", "APR", "MAY", "JUN",
        "JUL", "AUG", "SEP", "OCT", "NOV", "DEC" ];

        var day = d.getUTCDate().toString();
        var mon = d.getUTCMonth();
        var year = d.getUTCFullYear();

        $("#day").prepend('<span id="day_num">' + day + '</span>');

        var cc = mon;
        for (var i = 0; i < 12; i++) {
            $("#date_cont").append('<div class="month"><a href="" 
                  onclick="return false;" >' + monthNames[cc] + '</a></div>');

            cc++;

            if ( cc > 11 ) {
                cc = 0;
            }
        }
    }

我想要做的是让生成的.months元素保存不同的变量,如月份索引(0-11),可以被其他函数使用。我猜这些元素将充当对象(.month类的每个元素都拥有自己唯一的值)。我是javascript的新手,所以我不知道如何实现它。

2 个答案:

答案 0 :(得分:1)

当然,只需将其添加到数据属性中,稍后再获取它?

for (var i = 0; i < 12; i++) {
    var a   = $('<a />', {href: '#', text: monthNames[i] }),
        div = $('<div />', {'class': 'month', 'data-month': i });
                                              // ^^^^^ add a data attribute !
    $("#date_cont").append( div.append(a) );
}

以后您可以执行以下操作:

$('.month').on('click', function(e) {
    e.preventDefault();
    var idx   = $(this).data('month'),
        month = monthNames[idx];

    alert( month );
});

FIDDLE

答案 1 :(得分:0)

因为你正在使用jQuery ......如果你有一个元素......

var elem = $('<div></div>');
elem.data('day', someValue); //sets 'day' to someValue's value
elem.click(function(e){
  var d = $(this).data('day');
});

注意:您可以在dom元素上指定所需的任何属性(尽量不要冲突)。

var elem = document.getElementById("mine");
elem.somePropertyName = someValue;

此外,data- *属性被认为是将其推入标记的适当方式。

$('#elem').attr('data-day', someValue);
or
<div id="elem" data-day="someValue">...</div>