可能重複:
In Javascript, can you extend the DOM?如何擴展DOM元素作爲類(無jQuery的)
我想補充的方法和屬性的元素。它沒有被列爲全球課程。我可以這樣擴展字符串:
String.prototype.dosomething = function { ... };
我嘗試這樣的(這是更大的,這是基本的):
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 !!!
我嘗試用其他方式,但問題是始終不變的,當我儘量延長班級,這是行不通的。有沒有辦法避免這種情況?我知道jQuery做到了這一點,但我想做我的專利 - 如果可以的話,我可以......對吧?
編輯: 下面在Safari和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};
}
它給連內有很多其他的div的div的位置。在解決了我的庫的很多其他問題後,我會嘗試在IE8中進行測試。
你應該閱讀http://perfectionkills.com/whats-wrong-with-extending-the-dom/ – 2012-08-02 20:49:34
AFAIK,jQuery的沒有做到這一點。他們提供了一個包裝,但是避免碰到DOM原型。 – tucuxi 2012-08-02 20:51:10