我正在写一个javascript库。这是基本代码:
(function(){
var int,
method,
versrionInfo = {
release : "0.2.1",
date : "10/22/2013",
releaseNotes : "Jist has been modified to handle lists of elements."
},
Jist = function(s){
return new Jist.fn.init(s);
};
Jist.fn = Jist.prototype ={
init : function(s){
if(!s){
return this;
}
else{
this.length = 1;
if (typeof s === "object"){
this[0] = s;
}
else if(typeof s === "string"){
var obj;
obj = document.querySelectorAll(s);
this[0] = obj;
this.elem = this[0];
}
return this;
}
},
}
Jist.fn.init.prototype = Jist.fn;
Jist.fn.init.prototype = {
print : function(txt){
for(var i=0; i<this.elem.length; i++) {
this.elem[i].innerHTML = txt;
}
},
click : function(callback){
for(var i=0; i<this.elem.length; i++) {
this.elem[i].addEventListener("click",callback,false);
}
},
hide : function(){
for(var i=0; i<elem.length; i++) {
elem[i].style.display = 'none';
}
},
show : function(){
for(var i=0; i<elem.length; i++) {
elem[i].style.display = '';
}
},
fadeOut : function(ms) {
var elem = this.elem;
var opacity = 1,
interval = 50,
gap = interval / ms;
function func() {
opacity -= gap;
for(var i=0; i<elem.length; i++) {
elem[i].style.opacity = opacity;
}
if(opacity <= 0) {
window.clearInterval(fading);
for(var i=0; i<elem.length; i++){
elem[i].style.display = 'none';
}
}
}
var fading = window.setInterval(func, interval);
}
};
window.Jist = window.jist = window.Jis = window.jis = window.Jit = window.jit = window._ = Jist;
})();
以下是我在身体部分测试的内容:
<div id="fader"></div>
<input type="button" id="inpt" value="click"></input>
<script>
jist("#inpt").click(function(){
jist("#fader").fadeOut(1000);
});
</script>
这很好但我希望能够扩展像jQuery这样的函数,所以我可以这样做:
<div id="fader"></div>
<input type="button" id="inpt" value="click"></input>
<script>
jist("#inpt").click(function(){
jist("#fader").print("hi").fadeOut(1000);
});
</script>
因此文本“Hi”出现在div中,然后div淡出。
有谁知道我怎么能这样做?
非常感谢你!
答案 0 :(得分:0)
您的.print()
方法只需返回this
。这就是允许方法链接的内容,如jist("#fader").print("hi").fadeOut(1000);
。
将打印方法更改为:
print : function(txt){
for(var i=0; i<this.elem.length; i++) {
this.elem[i].innerHTML = txt;
}
return this;
},
因此,您希望能够链接到的任何方法都需要返回this
的值。您可能希望将此返回值添加到许多方法中,例如.hide()
,.show()
等...所以它们都支持方法链接。