まず、以下は私自身の JavaScript ライブラリのコードです。
(function() {
var lib = {
elems: [],
getElem: function() {
var tmpElem = [];
for (var i = 0; i < arguments.length; i++)
tmpElem.push(document.getElementById(arguments[i]));
this.elems = tmpElem;
tmpElem = null;
return this;
},
html: function(txt) {
for (var i = 0; i < this.elems.length; i++)
this.elems[i].innerHTML = txt;
return this;
},
style: function(prob, val) {
for (var i = 0; i < this.elems.length; i++)
this.elems[i].style[prob] = val;
return this;
},
addEvent: function(event, callback) {
if (this.elems[0].addEventListener) {
for (var i = 0; i < this.elems.length; i++)
this.elems[i].addEventListener(event, callback, false);
} else if (this.elems[0].attachEvent) {
for (var i = 0; i < this.elems.length; i++)
this.elems[i].attachEvent('on' + event, callback);
}
return this;
},
toggle: function() {
for (var i = 0; i < this.elems.length; i++)
this.elems[i].style.display = (this.elems[i].style.display === 'none' || '') ? 'block' : 'none';
return this;
},
domLoad: function(callback) {
var isLoaded = false;
var checkLoaded = setInterval(function() {
if (document.body && document.getElementById)
isLoaded = true;
}, 10);
var Loaded = setInterval(function() {
if (isLoaded) {
clearInterval(checkLoaded);
clearInterval(Loaded);
callback();
}
}, 10);
}
};
var fn = lib.getElem;
for(var i in lib)
fn[i] = lib[i];
window.lib = window.$ = fn;
})();
以前は、この方法で自分のライブラリを使用していましたが、問題なく動作しました。
$.getElem('box').html('Welcome to my computer.');
しかし、自分のライブラリのコードを更新し、追加したとき
var fn = lib.getElem;
for(var i in lib)
fn[i] = lib[i];
このように要素セレクターを使用するには
$('box').html('Welcome to my computer.');
しかし、lib オブジェクトのクローンを作成するために更新されたコードを追加すると、問題が発生し始めましたTypeError: $(...).html is not a function
。
そして今、私はそのような要素セレクターを使いたいです
$('box').html('Welcome to my computer.');
それ以外の
$.getElem('box').html('Welcome to my computer.');