Javascript 从HTML访问对象?
KeyJavascript 从HTML访问对象?,javascript,object,prototype,Javascript,Object,Prototype,Keydiv是原始密钥,它包含此对象的HTML 当我在范围中有htmlElement时,例如单击它,是否可以访问/获取/设置myObject和其他值:foo1和foo2 myObject是原型,我不介意使用原型getter/setter,但我不知道如何通过HTML元素访问对象 制作对象:不要介意谷歌地图部分,它只是一个普通对象 myObject { div: htmlElement, foo1: bar1, foo2: bar2 } 分配新的自定义HTML(data.latlng、data.
div
是原始密钥,它包含此对象的HTML
当我在范围中有htmlElement
时,例如单击它,是否可以访问/获取/设置myObject
和其他值:foo1
和foo2
myObject
是原型,我不介意使用原型getter/setter,但我不知道如何通过HTML
元素访问对象
制作对象:不要介意谷歌地图部分,它只是一个普通对象
myObject { div: htmlElement, foo1: bar1, foo2: bar2 }
分配
新的自定义HTML(data.latlng、data.foo、myMap)代码>到JS变量
//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
}
您可以通过以下方式访问它:
var customEle = new CustomHTML(data.latlng, data.foo, myMap);
更新以回答关于多个元素的第二个问题
1) 将ID分配给在draw
函数中创建的div
2) 在JSON中创建一个结构,将所有customHTML
byid
作为键保存
jQuery('body').on('click', '.custom-html', function(event) {
alert(customEle.foo);
}
3) 如何检索它
var arrCustomHTML = {};
arrCustomHTML.divId = customHTML;
还有另一种方法。在创建该元素后,使用jquerydata()
函数在创建过程中为该div
追加customHTML
jQuery('body').on('click', '.custom-html', function(event) {
var divId = $(this).prop('id');
var customHTMLForDiv = arrCustomHTML.divId;
alert(customHTMLForDiv.foo);
}
要在事件发生时访问它,请执行以下操作:
div.data('customHTML' , customHTML);
Lmk如果它对你有用myObject
JSON对吗?@pratikwebdev数据取自JSON,但我构建了自己的原型myObject
,这只是浏览器内存中的一个对象,我需要通过HTML
访问它(准确地说,是点击事件)它在视口中渲染,并且是该对象的一部分。@Juhana为什么不呢?字符串格式的HTML元素?进一步渲染,这个字符串可以用来渲染元素?所以myObject
也是JSON。如果您可以从浏览器内存中提取它,或者从任何可以在范围内的HTML元素中访问它的地方提取它。提供更多关于何时何地需要访问它的信息。@pratikwebdev不,它不是JSON,我在从那里获取数据并构造自己的对象之前解析JSON。我添加了一个示例。这是一个好主意,但是如果有多个CustomHTML
?如何访问作为该对象一部分的特定HTML
元素的正确对象?更新了我的答案@索洛坦克斯,我相信它会起作用的。我在脑海中使用了id
或data-
属性,但我认为可能有一种更简单的方法来获取对象a.k.a获取HTML
元素a.k.a的父属性在对象的层次结构中向上移动,并使用原型getter和setters.AFIK,这是不可能的,因为div
存储在customHTML
对象,但一旦呈现,它就不能与JSON对象本身耦合。如果它解决了你的问题,请接受并投票
div.data('customHTML' , customHTML);
jQuery('body').on('click', '.custom-html', function(event) {
var ele = $(this).data('customHTML');
alert(ele.foo);
}