【发布时间】:2016-02-01 23:57:12
【问题描述】:
myObject { div: htmlElement, foo1: bar1, foo2: bar2 }
键div是原始键,它包含此对象的HTML。
当我在范围内有htmlElement 时,是否可以访问/获取/设置myObject 和其他值:foo1 和foo2,例如点击它?
myObject 是原型,我不介意制作原型 getter/setter,但我不知道如何使用/通过 HTML 元素访问对象。
制作对象:不要介意Google Maps 部分,它只是一个普通对象..
function customHTML(latlng, foo, map) {
this.latlng = latlng;
this.foo = foo;
this.setMap(map);
}
customHTML.prototype = new google.maps.OverlayView();
customHTML.prototype.draw = function() {
var self = this;
var div = this.div;
//Create div if there's none
if (!div) {
div = this.div = document.createElement('div');
div.className = 'custom-html';
var panes = this.getPanes();
panes.overlayImage.appendChild(div);
}
//Location on map - not relevant for this question
var point = this.getProjection().fromLatLngToDivPixel(this.latlng);
if (point) {
div.style.left = (point.x - 20) + 'px';
div.style.top = (point.y - 64) + 'px';
}
};
//Create new objects
var data = /*parsed JSON*/;
var count = data.lenght;
var myMap = /*Google Map object - not relevant for this question*/;
for(i=0; i<count; i++) {
new CustomHTML(data[i].latlng, data[i].foo, myMap);
}
代码中的其他地方:
//Clicking element that was made above
jQuery('body').on('click', '.custom-html', function(event) {
//I need to access customHTML.foo for example, how?
//PS! I need to access it from outside, I cannot
//attach this click event in prototype.draw
}
【问题讨论】:
-
myObject是 JSON 对吗? -
@pratikwebdev 数据取自 JSON,但我构建了自己的原型
myObject,这只是浏览器内存中的一个对象,我需要通过HTML(点击事件到准确地说) 在视口中呈现并且是该对象的一部分。 -
@Juhana 为什么不呢?字符串格式的 HTML 元素?进一步渲染这个字符串可以用来渲染元素吗?
-
所以
myObject也是 JSON。如果您可以从浏览器内存或任何可以在范围内的 HTML 元素中访问它的地方获取它。提供有关您需要在何时何地访问它的更多信息。 -
@pratikwebdev 不,它不是 JSON,我在从那里获取数据并构造我自己的对象之前解析 JSON。我添加了一个示例。
标签: javascript object prototype