Mögliche Duplizieren erweitern:
In Javascript, can you extend the DOM?Wie DOM-Element als Klasse (ohne jQuery)
Ich versuche, Methoden und Eigenschaften zum Element hinzuzufügen. Es ist nicht als globale Klasse aufgeführt. Ich kann String wie folgt erweitern:
String.prototype.dosomething = function { ... };
ich so versuchen (es ist größer, das ist die Grund ist):
function $id(str){
this.element = document.getElementById(str);
return element;
}
var myElem = $id('myId'); // WORKS !!!
$id.prototype.dosomethig = function (... };
var myValue = $id('myId').dosomething(); // DOESN'T WORK !!!
Ich versuche, auf andere Weise, aber der Punkt, es ist immer das gleiche, wenn ich Versuchen Sie, die Klasse zu erweitern, es funktioniert nicht. Gibt es eine Möglichkeit, dies zu vermeiden? Ich weiß, dass jQuery das tut, aber ich möchte mein Onwn machen - wenn sie können, kann ich ... richtig?
Edit: Unterhalb eines Code bereits in Safari und Firefox arbeiten ...
Element.prototype.pos = function(){
var curleft = this.offsetLeft;
var curtop = this.offsetTop;
var scrleft = this.scrollLeft;
var scrtop = this.scrollTop;
var pElement = pElementScr = this.offsetParent
while(pElement){
curleft += pElement.offsetLeft;
curtop += pElement.offsetTop;
pElement = pElement.offsetParent;
}
while(pElementScr){
scrleft += pElementScr.scrollLeft;
scrtop += pElementScr.scrollTop;
pElementScr = pElementScr.offsetParent;
}
return {x:this.offsetLeft, y:this.offsetTop};
}
er die Position eines div gibt auch innere von vielen anderen divs. Ich werde versuchen, in IE8 zu testen, nachdem ich viele andere Probleme meiner Bibliothek gelöst habe.
Sie sollten lesen http://perfectionkills.com/whats-wrong-with-extending-the-dom/ –
AFAIK, ist jQuery dies nicht. Sie stellen einen Wrapper zur Verfügung, vermeiden jedoch das Berühren der DOM-Prototypen. – tucuxi