我有一个像这样的for循环:
for (var i = 0; i < 10; i++) {
obj[i] = new MapArea(some passed variables);
}
现在,这个构造函数有一些预定义的属性以及一些在初始化时定义的属性。正如for循环所暗示的那样,每个obj都保存在它自己的数组obj []中的索引中。我的问题是,在我迭代初始化之后,我无法使用
引用单个对象的属性this.propertyName;
或
$(this).propertyName;
我正在构建的插件操作鼠标事件(点击和悬停)意味着我需要能够检查附加到事件的obj以获取其当前状态的特定属性,但无法以编程方式知道什么索引它在数组中引用它,或者至少这样做是容易和简洁的。
有没有人遇到过这个问题并找到了解决方案,或者我非常强迫使用数组和索引作为参考?任何帮助都会很棒。
这是我的一个方法,例如:
$.fn.clickLight = function(options) {
var defaults = $.extend( {
color : "#43464B",
opacity : "0.3"
}, options);
ctx.globalAlpha = defaults.opacity;
$(area_ref).click(function(event) {
$(this).handleMouse(event).each(function() {
if (!$(this).clicked) { // I try and access here
console.log(obj.this.clicked);
$(this).highlight(defaults.color);
$(this).clicked = true;
} else {
console.log(this.clicked);
$(this).clearlight();
$(this).clicked = false;
}
} );
} );
$(area_ref).hover(function() {
$(this).handleMouse().each(function() {
$(this).highlight(defaults.color);
} );
},function() {
if (!$(this).clicked){ // I try and access here
$(this).handleMouse().each(function() {
$(this).clearLight();
} );
}
} );
return $(this);
};
答案 0 :(得分:1)
您可以使用jQuery的data function将对象绑定到DOM元素。因此,您可以执行以下操作来存储对象:
$('#clickableElement1').data('mapArea', new MapArea(some passed variables));
以下内容可以检索给定事件的对象:
var mapArea = $(event.currentTarget).data('mapArea');