博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
DpQuery.js
阅读量:6588 次
发布时间:2019-06-24

本文共 4683 字,大约阅读时间需要 15 分钟。

 

(function (window) {

//添加事件的方法通用所有
function addevent(evetname, fn, obj) {
if (document.attachEvent) { //ie9一下
obj.attachEvent("on" + evetname, function () {
fn.call(obj);
});
}
else {
obj.addEventListener(evetname, fn, false);

}
}

//通过类名获得元素

function getbyglass(classname, oparent) {

var ss = [];

if (!oparent) {
oparent = document;
}

var elements = oparent.getElementsByTagName("*");

if (document.getElementsByClassName) {

ss = oparent.getElementsByClassName(classname);

} else {

for (var i = 0; i < elements.length; i++) {
var obj = elements[i];
if (obj.className == classname) {

ss.push(obj);

}
}
}
return ss;
}

//得到元素的当前某个样式

function getStyle(element, stylename) {

 

if (element.currentStyle) {

return element.currentStyle[stylename];//ie下独有 不兼容部分

} else {

return window.getComputedStyle(element, false)[stylename];

}

}

//得到当前元素的绝对据上边距离 据下边距离

function getOffset(element) {

var x = element.offsetLeft;
var y = element.offsetTop;
if (element.parentElement != null) {
x += element.parentElement.offsetLeft;
y += element.parentElement.offsetTop;
element = element.parentElement;
}
return { x: x, y: y };
}

//构造函数

function DpQuery(context) {

return new DpQuery.prototype.inint(context);

}

DpQuery.prototype.inint = function (context) {

this.elements = [];//返回值

var type = typeof context;

if (type == 'function') {

addevent('load', context, window);
} else if (type == 'string') {

var starts = context.substr(0, 1);//跳过0个去一个

var svalue = context.substr(1);//跳过一个取所有

switch (starts) {

case "#":
this.elements.push(document.getElementById(svalue));
break;
case ".":
this.elements = getbyglass(svalue);
break;
default:
this.elements = document.getElementsByTagName(context);
break;

}

//return this.elements;

} else if (type == 'object') {
this.elements.push(context);
}
}

DpQuery.prototype.inint.prototype = DpQuery.prototype;

//原型 遍历元素

DpQuery.prototype.each = function (fn) {

for (var i = 0; i < this.elements.length; i++) {

fn(i, this.elements[i]);
}
}

//点击事件

DpQuery.prototype.click = function (fn) {

this.each(function (i, ele) {

addevent('click', fn, ele);
});
return this;
}

//鼠标按下事件

DpQuery.prototype.mousedown = function (fn) {
this.each(function (i, ele) {
addevent('mousedown', fn, ele);
});
return this;
}

//鼠标移动事件

DpQuery.prototype.mousemove = function (fn) {
this.each(function (i, ele) {
addevent('mousemove', fn, ele);
});
return this;
}

//鼠标抬起事件

DpQuery.prototype.mouseup = function (fn) {
this.each(function (i, ele) {
addevent('mouseup', fn, ele);
});

return this;

}

//鼠标滑上 滑出

DpQuery.prototype.hover = function (fnover, fnout) {
this.each(function (i, ele) {
addevent('mouseover', fnover, ele);
if (fnout) {
addevent('mouseout', fnout, ele);
}
});
return this;
}

//轮流切换

DpQuery.prototype.toogage = function () {

var _arguments = arguments;

this.each(function (i, ele) {
addevent('click', (function () {
var count = 0;
return function () {
_arguments[count % arguments.length]();
count++;
}
})(), ele);
});
}

//获取元素样式或者设置元素样式

DpQuery.prototype.css = function (stylename, stylevalue) {
if (arguments.length == 2) {
this.each(function (i, ele) {
ele.style[stylename] = stylevalue;
});
} else {
return getStyle(this.elements[0], stylename);
}
}

//获取或设置属性

DpQuery.prototype.attr = function (attrname, attrvalue) {
if (attrvalue) {
this.each(function (i, ele) {

ele.setAttribute(attrname, attrvalue);
});
} else {

return this.elements[0].getAttribute(attrname);

}

}
//高
DpQuery.prototype.Height = function (value) {

if (value) {

this.each(function (i, ele) {
ele.style.Height = value + "px";
});
} else {
return getStyle(this.elements[0], "height");
}
}

//宽

DpQuery.prototype.Width = function (value) {

if (value) {

this.each(function (i, ele) {
ele.style.width = value + "px";
});
} else {
return getStyle(this.elements[0], "width");
}
}

//距左边距离

DpQuery.prototype.left = function (value) {
if (!value) {
return getOffset(this.elements[0]).x;
} else {
this.elements[0].style.left = value + "px";
return this;
}

}

//距上边距离

DpQuery.prototype.top = function (value) {
if (!value) {
return getOffset(this.elements[0]).y;
} else {
this.elements[0].style.top = value + "px";
return this;
}

}

//拖拽

DpQuery.prototype.drag = function () {

this.each(function (i, ele) {

$(ele).mousedown(function (e) {
ele.style.position = "absolute";
ele.style["cursor"] = "pointer";

var event = e || event;

var disx = event.clientX - $(ele).left();

var disy = event.clientY - $(ele).top();

document.onmousemove = function (e) {

var event = e || event;
$(ele).left(event.clientX - disx);
$(ele).top(event.clientY - disy);
};

document.onmouseup = function () {

document.onmousemove = null;

document.onmouseup = null;

}

return false;

});
});

return this;

}

window.DpQuery = window.$ = DpQuery;

 

})(window);

转载地址:http://ibhno.baihongyu.com/

你可能感兴趣的文章
HTML5标准有缺陷 手机电池信息可泄露上网活动
查看>>
网秦任命两位新董事 成立投资委员会
查看>>
《Oracle高性能SQL引擎剖析:SQL优化与调优机制详解》一第一篇 执行计划
查看>>
停止过度设计,开发客户需要的软件
查看>>
B-TrunC标准加入ITU集群国际标准
查看>>
《Java 7程序设计入门经典》一1.10 另一种数据类型
查看>>
IBM GTS部门或有重大调整,最快本周见分晓
查看>>
FBI为车主支招:如何预防汽车黑客
查看>>
协鑫集成等四家公司被退出欧盟MIP协议
查看>>
瑞星年度网络安全报告揭示 “互联网+”企业最“高危”
查看>>
三星想抢苹果芯片订单?台积电表示想多了
查看>>
亚马逊表示并未放弃WP平台:正在打造新应用
查看>>
应用软件暗藏猫腻,信息安全咋保障
查看>>
Facebook宣布进一步推广Live Video功能
查看>>
唐雄燕点评NFV产业进程:2016年将迎来试点年
查看>>
组件价格跳水,光伏产品面临量价齐跌
查看>>
新加坡大数据初创公司 Latize 获 150 万美元风险融资
查看>>
中兴通讯和江苏电信携手推进SDN IPRAN创新进程
查看>>
中国幻想向欧美妥协取得5G权益将是一种错误
查看>>
云平台圈地须群攻莫单打
查看>>