使用jQuery.data()存储/检索的对象是否知道它所附加到的DOM元素?
考虑以下示例: HTML:使用jQuery.data()存储/检索的对象是否知道它所附加到的DOM元素?,jquery,Jquery,考虑以下示例: HTML: ComplexObject()是否有办法知道它“附加”到哪个DOM元素——在本例中是DIV“#cool DIV”。我想只使用ComplexObject()类向“#cool div”添加文本。。。但我不认为我能,或者至少我没能解决它。我知道这可能不是你想要的性感的内置类型答案,但你可以用这样的东西明确地分配它: var ComplexObject = function(domElt) { this.domElt = domElt; this.Append
ComplexObject()是否有办法知道它“附加”到哪个DOM元素——在本例中是DIV“#cool DIV”。我想只使用ComplexObject()类向“#cool div”添加文本。。。但我不认为我能,或者至少我没能解决它。我知道这可能不是你想要的性感的内置类型答案,但你可以用这样的东西明确地分配它:
var ComplexObject = function(domElt) {
this.domElt = domElt;
this.Append = function(textToAppend) {
//append text to the div that this is "attached" to
};
};
var obj = new ComplexObject($('#cool-div"));
var ComplexObject = function() {
this.Append = function(textToAppend) {
//append text to the div that this is "attached" to
};
this.elem = '';
};
var obj = new ComplexObject();
$("#cool-div").data("o", obj);
obj.elem = $("#cool-div"); // or obj.elem = $("#cool-div")[0]; if you want the node
希望这至少能有所帮助 我知道这可能不是你想要的性感的内置类型的答案,但你可以用如下方式明确地分配它:
var ComplexObject = function(domElt) {
this.domElt = domElt;
this.Append = function(textToAppend) {
//append text to the div that this is "attached" to
};
};
var obj = new ComplexObject($('#cool-div"));
var ComplexObject = function() {
this.Append = function(textToAppend) {
//append text to the div that this is "attached" to
};
this.elem = '';
};
var obj = new ComplexObject();
$("#cool-div").data("o", obj);
obj.elem = $("#cool-div"); // or obj.elem = $("#cool-div")[0]; if you want the node
希望这至少能有所帮助 不,ComplexObject不知道,除非你告诉它。你可以这样做:
var ComplexObject = function(domElt) {
this.domElt = domElt;
this.Append = function(textToAppend) {
//append text to the div that this is "attached" to
};
};
var obj = new ComplexObject($('#cool-div"));
var ComplexObject = function() {
this.Append = function(textToAppend) {
//append text to the div that this is "attached" to
};
this.elem = '';
};
var obj = new ComplexObject();
$("#cool-div").data("o", obj);
obj.elem = $("#cool-div"); // or obj.elem = $("#cool-div")[0]; if you want the node
不,ComplexObject不知道,除非你告诉它。你可以这样做:
var ComplexObject = function(domElt) {
this.domElt = domElt;
this.Append = function(textToAppend) {
//append text to the div that this is "attached" to
};
};
var obj = new ComplexObject($('#cool-div"));
var ComplexObject = function() {
this.Append = function(textToAppend) {
//append text to the div that this is "attached" to
};
this.elem = '';
};
var obj = new ComplexObject();
$("#cool-div").data("o", obj);
obj.elem = $("#cool-div"); // or obj.elem = $("#cool-div")[0]; if you want the node
默认情况下,对象不知道它附加到哪个元素——数据可以是任何东西,因此jquery不知道在附加它时如何告诉对象 您可以围绕
.data
编写一个wapper,使其符合您的要求,例如:
$.fn.dataaware = function(key, value) {
this.data(key, value);
if (value instanceof ComplexObject)
value.setContext(this);
}
您可能还需要包装
.removeData
。默认情况下,对象不知道它附加到哪个元素-数据可以是任何内容,因此jquery不知道在附加对象时如何告知对象
您可以围绕.data
编写一个wapper,使其符合您的要求,例如:
$.fn.dataaware = function(key, value) {
this.data(key, value);
if (value instanceof ComplexObject)
value.setContext(this);
}
您可能还需要包装
.removeData
。我想您可能需要.proxy()这个。我想你可能需要。代理()这个。