<!DOCTYPE HTML>
<html lang="en-US">
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<div id="demo1">this is a demo.</div>
<div id="demo2">this is a demo.</div>
<div id="demo3">this is a demo.</div>
<script type="text/javascript">
/**
* [MYAPP description]
* @type {[type]}
*/
var MYAPP=MYAPP || {};
MYAPP.namespace=function(ns_string){
var parts=ns_string.split("."),
parent=MYAPP,
i;
if (parts[0]==="MYAPP") {
parts=parts.slice(1);
}
for(i=0;i<parts.length;i++){
if (typeof parent[parts[i]]==="undefined") {
parent[parts[i]]={};
}
parent=parent[parts[i]];
}
return parent;
} MYAPP.namespace("MYAPP.DOM");
MYAPP.namespace("MYAPP.COR");
MYAPP.COR={
extend:function(Child,Source){
var i;
for(i in Source){
Child[i]=Source[i];
}
return Child;
}
}
MYAPP.DOM.dome=(function(){
function Dome(els){
var i;
for(var i=0;i<els.length;i++){
this[i]=els[i];
}
this.length=els.length;
}
MYAPP.COR.extend(Dome.prototype,(function(){
if (typeof Array.prototype.indexOf !=="function") {
Array.prototype.indexOf=function(item){
var i;
for(i=0;i<this.length;i++){
if (this[i]===item) {
return i;
}
}
return -1;
}
}
return {
map:function(fun){
var results=[],i;
for(i=0;i<this.length;i++){
results.push(fun.call(this,this[i],i));
}
return results;
},
forEach:function(fun){
this.map(fun);
return this;
},
mapOne:function(fun){
var len=this.map(fun);
return len.length > 1 ? len : len[0];
},
text:function(text){
if (typeof text !=="undefined") {
return this.forEach(function(el){
el.innerHTML=text;
})
}else{
return this.mapOne(function(el){
return el.innerText;
})
}
},
html:function(html){
if (typeof html !=="undefined") {
return this.forEach(function(el){
return el.innerHTML=html;
})
}else{
return this.mapOne(function(el){
return el.innHTML;
})
}
},
addClass:function(classes){
var className=" ",i;
if (typeof classes !=="string") {
for(i=0;i<classes.length;i++){
className+=classes[i];
}
}else{
className+=classes;
}
return this.forEach(function(el){
el.className+=className;
})
},
removeClass:function(clazz){
return this.forEach(function(el){
var cs=el.className.split(" "),i;
while ((i=cs.indexOf(clazz))>-1) {
cs=cs.slice(0,i).concat(cs.slice(++i));
};
el.className=cs.join(" ");
})
},
attr:function(attr,val){
if (typeof val !=="undefined") {
return this.forEach(function(el){
el.setAttribute(attr,val);
})
}else{
return this.mapOne(function(el){
return el.getAttribute(attr);
})
}
},
append:function(els){
return this.forEach(function (parEl, i) {
(function(){
els.forEach(function(childEl){
var childEl=childEl.cloneNode(true);
parEl.appendChild(childEl);
})
})()
});
},
prepend:function(els){
return this.forEach(function(parEl,i){
(function(){
els.forEach(function(childEl){
var childEl=childEl.cloneNode(true);
parEl.insertBefore(childEl,parEl.firstChild);
})
})()
})
},
remove:function(){
return this.forEach(function(el){
return el.parentNode.removeChild(el);
})
},
on:(function(){
if (document.addEventListener) {
return function(evt,fn){
return this.forEach(function(el){
el.addEventListener(evt,fn,false);
})
}
}else if(document.attachEvent){
return function(evt,fn){
return this.forEach(function(el){
el.attachEvent("on"+evt,fn);
})
}
}else{
return function(evt,fn){
return this.forEach(function(el){
el["on"+evt]=fn;
});
}
}
}()),
off:function(){
if (document.removeEventListener) {
return function(evt,fn){
return this.forEach(function(el){
el.removeEventListener(evt,fn,false);
})
}
}else if(document.detachEvent){
return function(evt,fn){
return this.forEach(function(el){
el.detachEvent(evt,fn,false);
})
}
}else{
return function(evt,fn){
return this.forEach(function(el){
el["on"+evt]=null;
})
}
}
}
}
}()))
return {
get:function(selector){
var els;
if (typeof selector ==="string") {
els=document.querySelectorAll(selector);
}else if(selector.length){
els=selector;
}else{
els=[selector];
}
return new Dome(els);
},
create:function(tagName,attrs){
var el=new Dome([document.createElement(tagName)]);
if (attrs) {
if (attrs.className) {
el.addClass(attrs.className);
delete attrs.className;
}
if (attrs.text) {
el.text(attrs.text);
delete attrs.text;
}
for(var key in attrs){
if (attrs.hasOwnProperty(key)) {
el.attr(key,attrs[key]);
}
}
}
return el;
}
}
}())
MYAPP.DOM.whenReady=(function(){
var funcs=[],ready=false;
var handler=function(e){
if (ready) {
return null;
}
if (e.type==="readystatechange" && document.readyState!=="complete") {
return null;
}
for(var i=0;i<funcs.length;i++){
funcs[i].call(document);
}
ready=true;
funcs=null;
}
if (document.addEventListener) {
document.addEventListener("DOMContentLoaded",handler,false);
document.addEventListener("readystatechange",handler,false);
window.addEventListener("load", handler, false);
}else if(document.attachEvent){
document.attachEvent("onreadystatechange",handler);
window.attachEvent("onload",handler);
}
return function whenReady(f){
if(ready){
f.call(document);
}else{
funcs.push(f);
}
}
}())
// MYAPP.DOM.whenReady(function(){
// var demo=MYAPP.DOM.dome.get("#demo1,#demo2,#demo3");
// var e=MYAPP.DOM.dome.create("div",{className:"3",text:"333"});
// demo.prepend(e);
// })
</script>
</body>
</html>

结合之前看的一些js书籍以及blog和一些js框架源码 最近总结了一下,花点时间完善了一下之前写的js小库,继续完善之中

javascript library的更多相关文章

  1. A javascript library providing cross-browser, cross-site messaging/method invocation. http://easyxdm.net

    easyXDM - easy Cross-Domain Messaging easyXDM is a Javascript library that enables you as a develope ...

  2. Dynamices CRM JS 类库 神器 XrmServiceToolkit - A Microsoft Dynamics CRM 2011 & CRM 2013 JavaScript Library

    XrmServiceToolkit - A Microsoft Dynamics CRM 2011 & CRM 2013 JavaScript Library http://xrmservic ...

  3. Raphaël—JavaScript Library

    Raphaël-JavaScript Library What is it? Raphaël is a small JavaScript library that should simplify yo ...

  4. a Javascript library for training Deep Learning models

    w强化算法和数学,来迎接机器学习.神经网络. http://cs.stanford.edu/people/karpathy/convnetjs/ ConvNetJS is a Javascript l ...

  5. JavaScript 工具库:Cloudgamer JavaScript Library v0.1 发布

    JavaScript 工具库:Cloudgamer JavaScript Library v0.1 发布   研究了一年多的js,也差不多写一个自己的js库了.我写这个不算框架,只是一个小型的js工具 ...

  6. jQuery JavaScript Library v3.2.1

    /*! * jQuery JavaScript Library v3.2.1 * https://jquery.com/ * * Includes Sizzle.js * https://sizzle ...

  7. A JavaScript library for reading EXIF meta data from image files.

    exif-js/exif-js: JavaScript library for reading EXIF image metadata https://github.com/exif-js/exif- ...

  8. 转:Build Your First JavaScript Library

    http://net.tutsplus.com/tutorials/javascript-ajax/build-your-first-javascript-library/ Step 1: Creat ...

  9. [React] 01 - Intro: javaScript library for building user interfaces

    教学视频: http://www.php.cn/code/8217.html React 教程: http://www.runoob.com/react/react-tutorial.html 本篇是 ...

随机推荐

  1. 安装配置OPENCMS的Replication cluster(从)详细过程

    1.  把opencms.war拷贝到tomcat下的webapps目录,启动tomcat服务. 2.  在安装之前,打开解压缩后的war包目录(tomcat启动后会自动把war包解开),删除目录 $ ...

  2. android listview和button,ImageButton等有事件的控件的总结

    public ImageButton(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defSty ...

  3. DWR推送技术

    “服务器推送技术”(ServerPushing)是最近Web技术中最热门的一个流行术语.它是继“Ajax”之后又一个倍受追捧的Web技术.“服务器推送技术”最近的流行跟“Ajax ”有着密切的关系. ...

  4. 【Recover Binary Search Tree】cpp

    题目: Two elements of a binary search tree (BST) are swapped by mistake. Recover the tree without chan ...

  5. 安装Symfony2

    我就不明白这个框架明明很小就几M,为什么这么难下载. 他们为什么不把文件打包好?非要搞得这么复杂. 一开始我在Linux ubuntu下载没有成功 然后想在win10上试试 到www.apache.o ...

  6. asp.net 实现微信公众平台的主动推送信息

    通过学习借鉴朋友的实现方法进行整理(微信公众帐号主动发送消息给用户,asp.net版本). /// <summary> /// MD5 32位加密 /// </summary> ...

  7. codeforces 161D Distance in Tree 树形dp

    题目链接: http://codeforces.com/contest/161/problem/D D. Distance in Tree time limit per test 3 secondsm ...

  8. PKUSC滚粗记

    本来想考得这么烂还是别写了,后来想想毕竟是我高中难得的一次经历,靠脑子记的话我这脑残患者将来肯定会忘了啊……QwQ 好像跟我一样用这个题目的神犇都签了一本QwQ Day 0 来的路上我校其他三位OIe ...

  9. JS模板引擎 :ArtTemplate (1)

    1.为什么需要用到模板引擎 我们在做前端开发的时候,有时候经常需要根据后端返回的json数据,然后来生成html,再显示到页面中去. 例如这样子: var data = [ {text: " ...

  10. css hack一览

    浏览器对css hack的支持情况