向动态事件处理程序添加外部引用

时间:2013-06-28 17:03:13

标签: jquery

我有一个创建的函数,我想将id传递给动态点击事件处理程序。对象消失,计数器值始终是最后一个递增的值。我认为有一种方法可以传递它,但我无法弄明白。

以下是我的演示代码... http://jsfiddle.net/ryanoc/r62jJ/

非常感谢任何帮助。

(function(){
$('#chartContainer').empty().attr("style", "overflow: hidden;");
var office = [];
var len = 5;
for (var i = 0; i < len; i++) {
    var obj = {
        officeTitle: 'Office:'+i,
        officeId: i,
        resizeable: true
    };
    office.push(obj);
}

for (var i = 0; i < office.length; i++) {

    var chartHtml = $("<div>")
    .attr("id", "chartContainer" + i)
    .attr("style", "margin-top:20px;");

    $('#chartContainer').append(chartHtml);

    var officeLabel = $("<div>")
    .attr("style", "background-color:#eee;cursor:pointer;")
    .html(office[i]["officeTitle"] + ':' + office[i]["officeId"] )
    .click(function(){
        alert(i);
        alert(office[i]["officeId"])
    });

    $('#chartContainer' + i).append(officeLabel);
}

})();

2 个答案:

答案 0 :(得分:1)

你可以做到

(function(index) {
    var officeLabel = $("<div>")
        .attr("style", "background-color:#eee;cursor:pointer;")
        .html(office[index]["officeTitle"] + ':' + office[index]["officeId"] )
        .click(function(){
            alert(office[index]["officeId"])
        });
    $('#chartContainer' + index).append(officeLabel);
})(i);

DEMO

答案 1 :(得分:1)

这就是我要做的事情:

$(function(){
    $('#chartContainer').empty().css('overflow', 'hidden');

    $.each([0,1,2,3,4], function(i, num) {
        var chartHtml   = $('<div>', {id: 'chartContainer' + num, style: 'margin-top : 20px'}),
            officeLabel = $("<div>", {style: 'background-color:#eee; cursor:pointer;',
                                      html : 'Office'+ num + ':' + num,
                                      on: {
                                            click: function( event ) {
                                               alert(num);
                                            }
                                          }
                                     });

        $('#chartContainer').append(chartHtml);
        $('#chartContainer' + num).append(officeLabel);
    });
});

FIDDLE

相关问题