我有一个创建的函数,我想将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);
}
})();
答案 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);
答案 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);
});
});