常用的函数

 

1.事件绑定

function addHandler(elem,event,fn){
    if(elem.addEventListener){
        return elem.addEventListener(event,fn,false);
    }else{
        return elem.attachEvent('on'+event,fn);
    }
}

function removeHandler(elem,event,fn){
    if(elem.removeEventListener){
        return elem.removeEventListener(event,fn,false);
    }else{
        return elem.detachEvent('on'+event,fn);
    }
}

2. drag事件 

addHandler(elem,'mousedown',function(e){
    var e = e || window.event;
    var target = e.target || e.srcElement;
    addHandler(document,'mousemove',move);
})
function move(e){}...

addHandler(document,'mouseup',up);

function up(e){
    var e = e || window.event;
    removeHandler(document,'mousemove',move);
    removeHandler(document,'mouseup',up);
}

3.事件委托

addHandler(elem,'click',function(e){
    var  e = e || window.event;
    var target = e.target;
    if(target.nodeName.toLowerCase() == 'li'){
        // ...
    }
}

4.获取实时样式/设置行间样式

function getCurStyle(elem,attr,value){
    if(arguements.length === 2){
        return elem.currentStyle?elem.currentStyle[attr]:window.getComputedStyle(elem,null)[attr];
    }else if(arguements.length === 3){
        elem.style[attr] = value;
    }
}

5.阻止冒泡事件

addHandler(elem,'click',function(e){
    var e = e || window.event;
    // 阻止默认事件
    e.preventDefault();
    // 阻止事件冒泡
    e.stopPropagation();
    e.cancelBubble = true;
})

6.移动动画函数

	function startM(elem,obj,callback,buffer){
	    console.log(elem.timer);
	    clearInterval(elem.timer);
	    elem.timer = setInterval(function(){
	        move(elem,obj,callback);
	    },30)
	}

	function move(elem,obj,callback,buffer){
		var bComplete = true;

		for(var attr in obj){
			var iTarget = obj[attr];

		    var cur = parseFloat(elem.currentStyle?elem.currentStyle[attr]:window.getComputedStyle(elem,null)[attr]);

		    if(attr === 'opacity'){
		        cur = cur.toFixed(2)*100;
		    }
		    var speed = (iTarget - cur)/(buffer||5);
		    speed = speed>0?Math.ceil(speed):Math.floor(speed);

		    if(attr === 'opacity'){
		    	cur == iTarget || (bComplete = false,elem.style[attr] = (cur + speed)/100,elem.style.filter = 'alpha(opacity='+(cur+speed)+')')
			}else{
		    	cur == iTarget || (bComplete = false,elem.style[attr] = cur + speed + 'px')
		    	// cur == iTarget && (bComplete = true)
	    	}
	    }
	    bComplete && (clearInterval(elem.timer),callback && callback())
	}
var jeft = {
		id:function(id){
			return typeof id === 'string'?document.getElementById(id):id;
		},
		class:function(className,oParent){
			return (oParent||document).getElementsByClassName(className);
		},
		tag:function(tagName,oParent){
			return (oParent||document).getElementsByTagName(tagName);
		},
		on:function(elem,event,fn){
			return elem.addEventListener?elem.addEventListener(event,fn):elem.attachEvent(on+'event',fn);
		},
		index:function(elem){
			var oChildren = elem.parentNode.children,i;
			for(i=0;i<oChildren.length;i++){
				if(elem == oChildren[i]) return i;
			}
			return -1;
		},
		pageX: function(element) {
			return element.offsetLeft + (element.offsetParent ? arguments.callee(element.offsetParent) : 0)
		},
		pageY: function(element) {
			return element.offsetTop + (element.offsetParent ? arguments.callee(element.offsetParent) : 0)	
		},
		hasClass:function(elem,className){
			return new RegExp("(^|\\s)"+className + "(\\s|$)").test(elem.className);
		},
		attr:function(elem,attr,value){
			if(arguments.length === 2){
				return elem.getAttribute(attr) ? elem.getAttribute(attr):(element.attributes[attr].nodeValue || elem[attr] || undefined);
			}
			if(arguments.length === 3){
				elem.setAttribute(attr,value);
			}
		}
	}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值