Duplicar posible:
In Javascript, can you extend the DOM?Cómo extender DOM elemento como una clase (sin jQuery)
Estoy tratando de agregar métodos y propiedades al elemento. No está listado como una clase global. Puedo extiendo cadena como esta:
String.prototype.dosomething = function { ... };
trato como esto (que es más grande, este es el básico):
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 !!!
Trato de otras maneras pero el punto es siempre la misma, cuando intenta extender la clase, no funciona. Hay alguna manera de evitar esto? Sé que jQuery hace esto, pero quiero hacer mi propio trabajo. Si pueden, puedo ... ¿no?
Editar: A continuación un código que ya están trabajando en Safari y Firefox ...
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};
}
Se da la posición de un div incluso interior de una gran cantidad de otros divs. Trataré de probar en IE8, después de resolver muchos otros problemas de mi biblioteca.
Debe leer http://perfectionkills.com/whats-wrong-with-extending-the-dom/ –
yo sepa, jQuery no hace esto. Proporcionan una envoltura, pero evitan tocar los prototipos DOM. – tucuxi