没有jquery的时候,你看看这个
vjs
- var br = (function() {
- var ua = navigator.userAgent.toLowerCase();
- browser = {
- iPhone: /iphone/.test(ua),
- iPad: /ipad/.test(ua),
- iPod: /ipod/.test(ua),
- isLetv: /letv/.test(ua),
- Android: /android/.test(ua),
- AndroidPad: /android/.test(ua) && !/mobile/.test(ua),
- atwin: /win/.test(ua),
- opera: /opera/.test(ua),
- msie: /msie/.test(ua),
- firefox: /firefox/.test(ua),
- safari: /safari/.test(ua) && !/chrome/.test(ua),
- wph: /windows phone/.test(ua),
- ps: /playstation/.test(ua),
- uc: /ucbrowser|ucweb/.test(ua),
- xiaomi: /xiaomi/.test(ua),
- weixin: /MicroMessenger/i.test(ua),
- isLetvTv: function() {
- try {
- return typeof LetvFish.getBrowserType == 'function';
- } catch (e) {
- return false;
- }
- }
- };
- var rwebkit = /(webkit)[ \/]([\w.]+)/,
- ropera = /(opera)(?:.*version)?[ \/]([\w.]+)/,
- rmsie = /(msie) ([\w.]+)/,
- rmozilla = /(mozilla)(?:.*? rv:([\w.]+))?/;
- var match = rwebkit.exec(ua) ||
- ropera.exec(ua) ||
- rmsie.exec(ua) ||
- ua.indexOf("compatible") < 0 && rmozilla.exec(ua) || [];
- browser.version = match[2] || "0";
- return browser;
- })();
- var $js = (function() {
- var undefined, filter = [].filter,
- slice = [].slice,
- class2type = {},
- classSelectorRE = /^\.([\w-]+)$/,
- idSelectorRE = /^#([\w-]*)$/,
- tagSelectorRE = /^[\w-]+$/;
- var browser = br;
- /**
- * @desc vjs框架入口,实现DOM选择器
- *
- */
- vjs = function(selector, context) {
- return new vjs.fn.init(selector, context);
- }
- vjs.isPC = false;
- var qsa = function(element, selector) {
- var found
- try {
- return (isDocument(element) && idSelectorRE.test(selector)) ?
- ((found = element.getElementById(RegExp.$1)) ? [found] : []) :
- (element.nodeType !== 1 && element.nodeType !== 9) ? [] :
- slice.call(
- classSelectorRE.test(selector) ? (
- element.getElementsByClassName ? element.getElementsByClassName(RegExp.$1) : qsc(element, RegExp.$1)) :
- tagSelectorRE.test(selector) ? element.getElementsByTagName(selector) :
- element.querySelectorAll(selector)
- )
- } catch (e) {
- return []
- }
- }
- var Z = function(me, dom, selector) {
- dom = dom || []
- me.selector = selector || ''
- me.length = dom.length
- for (var i = 0, j = dom.length; i < j; i++) {
- me[i] = dom[i];
- }
- return me
- }
- var isZ = function(object) {
- return object instanceof Z
- }
- var qsc = function(parent, id) {
- if (parent.getElementsByTagName) {
- var el = parent.getElementsByTagName('*');
- var pattern = new RegExp("(^|\\s)" + id + "(\\s|$)");
- for (var i = 0, j = el.length; i < j; i++) {
- if (pattern.test(el[i].className)) {
- return [el[i]];
- }
- }
- }
- return [];
- }
- vjs.fn = {
- init: function(selector, context) {
- if (!selector) return Z(this);
- else if (selector.nodeType) return Z(this, [selector])
- else {
- var dom
- if (isArray(selector)) dom = compact(selector)
- else if (context !== undefined) return vjs(context).find(selector)
- else dom = qsa(document, selector)
- return Z(this, dom, selector);
- }
- },
- find: function(selector) {
- var result, me = this;
- if (typeof selector == 'object')
- result = vjs(selector).filter(function() {
- var node = this
- return [].some.call(me, function(parent) {
- return vjs.contains(parent, node)
- })
- })
- else if (this.length == 1) result = vjs(qsa(this[0], selector))
- else result = this.map(function() {
- return qsa(this, selector)
- })
- return result
- },
- each: function(callback) {
- if ([].every) {
- [].every.call(this, function(el, idx) {
- return callback.call(el, idx, el) !== false
- });
- } else {
- for (var i = 0, len = this.length; i < len; i++) {
- callback.call(this[i], i, this[i]);
- }
- }
- return this
- },
- hasClass: function(name) {
- var me = this[0];
- return new RegExp('(\\s|^)' + name + '(\\s|$)').test(me.className);
- },
- addClass: function(name) {
- var classNameArray = (name || '').split(/\s+/);
- return this.each(function() {
- var currClassName = this.className;
- for (var i = 0, len = classNameArray.length; i < len; i++) {
- if (!vjs(this).hasClass(classNameArray[i])) {
- currClassName += ' ' + classNameArray[i];
- }
- }
- this.className = currClassName;
- });
- },
- removeClass: function(name) {
- var classNameArray = (name || '').split(/\s+/);
- return this.each(function() {
- var currClassName = this.className;
- for (var i = 0, len = classNameArray.length; i < len; i++) {
- var reg = new RegExp('(\\s|^)' + classNameArray[i] + '(\\s|$)');
- currClassName = currClassName.replace(reg, ' ');
- }
- this.className = vjs.trim(currClassName);
- })
- },
- on: function(name, callback, context) {
- return this.each(function(i, element) {
- var evtDelagate = function(e) {
- e.target = e.target || e.srcElement;
- callback.call(context, e)
- }
- if (!element['domid']) element['domid'] = String(Math.random()).slice(-4);
- var guid = name + '_' + element['domid'];
- callback[guid] = evtDelagate;
- if (element.addEventListener) {
- element.addEventListener(name, evtDelagate, false);
- } else if (element.attachEvent) {
- element.attachEvent('on' + name, evtDelagate);
- }
- });
- },
- off: function(name, callback, context) {
- return this.each(function(i, element) {
- var guid = name + '_' + element['domid'],
- fn = callback[guid] || callback;
- if (element.removeEventListener) {
- element.removeEventListener(name, fn, false);
- } else if (element.detachEvent) {
- element.detachEvent('on' + name, fn);
- }
- });
- },
- getStyle: function(styleName) {
- var node = this[0];
- if (browser.msie) {
- switch (styleName) {
- // 透明度
- case "opacity":
- return ((node.filters['DXImageTransform.Microsoft.Alpha'] ||
- node.filters['alpha'] || {}).opacity ||
- 100);
- // 浮动
- case "float":
- styleName = "styleFloat";
- }
- return node.style[styleName] ||
- node.currentStyle ? node.currentStyle[styleName] : 0;
- } else {
- // 浮动
- if (styleName == "float") {
- styleName = "cssFloat";
- }
- return node.style[styleName] ||
- (document.defaultView.getComputedStyle(node, "") ? document.defaultView.getComputedStyle(node, "")[styleName] : null) || 0;
- }
- },
- setStyle: function(styleName, styleValue) {
- return this.each(function() {
- var node = this;
- if (browser.msie) {
- switch (styleName) {
- case "opacity":
- node.style.filter = "alpha(opacity=" + (styleValue * 100) + ")";
- if (!node.currentStyle || !node.currentStyle.hasLayout) {
- node.style.zoom = 1;
- }
- return;
- case "float":
- styleName = "styleFloat";
- }
- } else {
- if (styleName == "float") {
- styleName = "cssFloat";
- }
- }
- node.style[styleName] = styleValue;
- });
- },
- getAttr: function(name) {
- var node = this[0];
- return node.getAttribute(name);
- },
- setAttr: function(name, value) {
- return this.each(function() {
- var node = this;
- node.setAttribute(name, value);
- });
- },
- offset: function() {
- var me = this[0];
- var body = document.body,
- box = me.getBoundingClientRect();
- return {
- top: box.top + (window.scrollY || body.parentNode.scrollTop || me.scrollTop) - (document.documentElement.clientTop || body.clientTop || 0),
- left: box.left + (window.scrollX || body.parentNode.scrollLeft || me.scrollLeft) - (document.documentElement.clientLeft || body.clientLeft || 0)
- };
- },
- width: function(num) {
- if (typeof num == 'undefined') {
- return this[0].offsetWidth;
- }
- this[0].style.width = parseFloat(num) + 'px';
- },
- height: function(num) {
- if (typeof num == 'undefined') {
- return this[0].offsetHeight;
- }
- this[0].style.height = parseFloat(num) + 'px';
- },
- map: function(fn) {
- return vjs(vjs.map(this, function(el, i) {
- return fn.call(el, i, el)
- }))
- }
- }
- vjs.fn.init.prototype = vjs.fn;
- function type(obj) {
- return obj == null ? String(obj) :
- class2type[toString.call(obj)] || "object"
- }
- function isFunction(value) {
- return type(value) == "function"
- }
- function isDocument(obj) {
- return obj != null && (obj.nodeType == 9 || obj.nodeType == obj.DOCUMENT_NODE)
- }
- function isArray(value) {
- return value instanceof Array
- }
- function likeArray(obj) {
- return typeof obj.length == 'number'
- }
- function compact(array) {
- return filter.call(array, function(item) {
- return item != null
- })
- }
- function className(node, value) {
- var klass = node.className,
- svg = klass && klass.baseVal !== undefined
- if (value === undefined) return svg ? klass.baseVal : klass
- svg ? (klass.baseVal = value) : (node.className = value)
- }
- function funcArg(context, arg, idx, payload) {
- return isFunction(arg) ? arg.call(context, idx, payload) : arg
- }
- vjs.contains = function(parent, node) {
- return parent !== node && parent.contains(node)
- }
- vjs.map = function(elements, callback) {
- var value, values = [],
- i, key
- if (likeArray(elements))
- for (i = 0; i < elements.length; i++) {
- value = callback(elements[i], i)
- if (value != null) values.push(value)
- } else
- for (key in elements) {
- value = callback(elements[key], key)
- if (value != null) values.push(value)
- }
- return values
- }
- vjs.each = function(elements, callback) {
- var i, key
- if (likeArray(elements)) {
- for (i = 0; i < elements.length; i++)
- if (callback.call(this, i, elements[i]) === false) return elements
- } else {
- for (key in elements)
- if (callback.call(this, key, elements[key]) === false) return elements
- }
- return elements
- }
- vjs.trim = function(str) {
- return str.replace(/^\s\s*/, '').replace(/\s\s*$/, '');
- }
- vjs.each("Boolean Number String Function Array Date RegExp Object".split(" "), function(i, name) {
- class2type["[object " + name + "]"] = name.toLowerCase()
- });
- vjs.extend = function(props) {
- var init, subObj;
- props = props || {};
- init = props['init'] || props.init || this.prototype['init'] || this.prototype.init || function() {};
- subObj = function() {
- init.apply(this, arguments);
- };
- subObj.prototype = vjs.create(this.prototype);
- subObj.prototype.constructor = subObj;
- if (!props.__proto__) props.__proto__ = subObj.prototype;
- subObj.extend = vjs.extend;
- for (var name in props) {
- if (props.hasOwnProperty(name)) {
- subObj.prototype[name] = props[name];
- }
- }
- return subObj;
- }
- vjs.create = function(obj) {
- function F() {}
- F.prototype = obj;
- return new F();
- };
- vjs.getWinWH = function() {
- var pagerWidth = window.innerWidth,
- pagerHeight = window.innerHeight;
- if (typeof pagerWidth != 'number') {
- if (document.compatMode == 'CSS1Compat') {
- pagerWidth = document.documentElement.clientWidth;
- pagerHeight = document.documentElement.clientHeight;
- } else {
- pagerWidth = document.body.clientWidth;
- pagerHeight = document.body.clientHeight;
- }
- }
- return {
- width: pagerWidth,
- height: pagerHeight
- }
- }
- vjs.safari = browser.safari;
- return vjs;
- })();
- var emptyFn = function(){};
- var lib = {
- createElement: function(tagName, attributes) {
- var el = document.createElement(tagName),
- attrname;
- for (attrname in attributes) {
- if (attributes.hasOwnProperty(attrname)) {
- if (attrname.indexOf("-") !== -1) {
- el.setAttribute(attrname, attributes[attrname]);
- } else {
- el[attrname] = attributes[attrname];
- }
- }
- }
- return el;
- },
- removeElem: function(node) {
- if (node) {
- if (node.remove) {
- return node.remove();
- } else {
- return node.parentNode && node.parentNode.removeChild && node.parentNode.removeChild(node);
- }
- }
- },
- el: function(p, n) {
- var elem = n ? $js(p).find(n)[0] : $js(p)[0];
- if (!elem) {
- elem = {
- "setAttribute": function() {},
- "style": {},
- "isnull": true
- };
- }
- return elem;
- },
- //判断是否存在这个元素
- existEl: function(el) {
- if (typeof el === 'object') {
- if (el.isnull) {
- return false;
- } else if (el instanceof Array) {
- return el.length > 0;
- } else {
- return true;
- }
- } else if (typeof el === 'string') {
- return arguments.callee(this.el(el));
- }
- return false;
- },
- now: Date.now || function() {
- return +new Date();
- },
- merge: function(obj1, obj2, safe) {
- if (!obj2) {
- obj2 = {};
- };
- for (var attrname in obj2) {
- if (obj2.hasOwnProperty(attrname) && (!safe || !obj1.hasOwnProperty(attrname))) {
- obj1[attrname] = obj2[attrname];
- }
- }
- return obj1;
- },
- wsLog: function(data) {},
- debug: function(msg, prefix, line) {
- line = line || " ";
- if (H5AD.config.DEBUG == true || adTools.getQuery("arkdebug")) {
- if (typeof msg == 'object') {
- if (prefix) {
- console.log("%c" + prefix, "color:#f0d");
- this.wsLog(prefix);
- }
- this.wsLog(msg);
- console.log(msg);
- } else {
- if (msg == undefined) {
- console.log("数据空" + line)
- return;
- }
- this.wsLog(msg);
- console.log(msg + line);
- }
- }
- },
- json: function(data) {
- try {
- if (typeof data === "string") {
- if (JSON && JSON.parse) {
- return JSON.parse(data);
- }
- return eval("(" + data + ")");
- }
- //谨慎使用
- return JSON.stringify(data);
- } catch (ex) {
- return 'error';
- }
- },
- // 对象浅复制
- easyClone: function(raw, target) {
- for (var prop in target) {
- if (target.hasOwnProperty(prop) && typeof target[prop] !== 'object') {
- raw[prop] = target[prop];
- }
- }
- },
- getJSON: function(param) {
- var url = param.url,
- data = param.data,
- success = param.success,
- fail = param.fail,
- callback = param.callback || 'callback',
- timeout = param.timeout || 5000,
- maxCount = param.maxCount || 2;
- var jsonpCallback,
- count = -1,
- delayID = 0,
- s,
- self = this,
- head = document.head || document.getElementsByTagName('head')[0] || document.documentElement;
- var tmp = [];
- if(data) for(var k in data) tmp.push(k + '=' + data[k]);
- if(!/\?/.test(url)){
- url += '?' + tmp.join('&');
- }else{
- url += '&' + tmp.join('&');
- }
- var addCb = function(){
- var time = self.now(),
- jsonpCallback = 'vjs_' + time + Math.floor(Math.random()*100);
- window[jsonpCallback] = function(response) {
- destroy();
- success.call(this, response,{responseTime: self.now()-time, retryCount: count});
- window[jsonpCallback] = null;
- };
- return jsonpCallback;
- };
- var destroy = function(){
- if(window[jsonpCallback]) window[jsonpCallback] = emptyFn;
- clearTimeout(delayID);
- if (s && s.parentNode) {
- head.removeChild(s);
- s.onload = s.onreadystatechange = null;
- s = undefined;
- }
- };
- var load = function() {
- destroy();
- count++;
- if (count >= maxCount){
- fail && fail.call(this);
- return;
- }
- jsonpCallback = addCb();
- var jsonpUrl = url;
- if(/(\=)\?(&|$)/i.test(jsonpUrl)){
- jsonpUrl = jsonpUrl.replace(/(\=)\?(&|$)/i,'$1' + jsonpCallback + '$2');
- }else{
- jsonpUrl += '&' + callback + '=' + jsonpCallback+'&j='+jsonpCallback;
- }
- if(param.log) param.log.pushLog('lib getJSON===' + jsonpUrl + '===' + jsonpCallback + '====' + count);
- s = document.createElement('script');
- s.setAttribute('type', 'text/javascript');
- s.setAttribute('src', jsonpUrl);
- head.insertBefore(s, head.firstChild);
- delayID = setTimeout(load, timeout);
- };
- load();
- return {
- destroy : destroy
- }
- }
- };
- /**
- //以下对lib的使用
- var url = "http://localhost:3000/reso";
- lib.getJSON({url:url,success:function(data){
- alert("nihao");
- }});
- //lib createElement的使用
- var src = "http://i3.letvimg.com/lc06_iscms/201611/09/23/49/7c2767be74d145a4b9e6eb8f648e46a0.jpg";
- var img = lib.createElement('img', {
- src: src
- });
- $js(img).on('load', function() {
- img = null;
- });
- */
- //
- lib.existEl("box");//这个函数
没有jquery的时候,你看看这个的更多相关文章
- Angular杂谈系列1-如何在Angular2中使用jQuery及其插件
jQuery,让我们对dom的操作更加便捷.由于其易用性和可扩展性,jQuer也迅速风靡全球,各种插件也是目不暇接. 我相信很多人并不能直接远离jQuery去做前端,因为它太好用了,我们以前做的东西大 ...
- jQuery UI resizable使用注意事项、实时等比例拉伸及你不知道的技巧
这篇文章总结的是我在使用resizable插件的过程中,遇到的问题及变通应用的奇思妙想. 一.resizable使用注意事项 以下是我在jsfiddle上写的测试demo:http://jsfiddl ...
- Jquery的点击事件,三句代码完成全选事件
先来看一下Js和Jquery的点击事件 举两个简单的例子 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN&q ...
- jQuery实践-网页版2048小游戏
▓▓▓▓▓▓ 大致介绍 看了一个实现网页版2048小游戏的视频,觉得能做出自己以前喜欢玩的小游戏很有意思便自己动手试了试,真正的验证了这句话-不要以为你以为的就是你以为的,看视频时觉得看懂了,会写了, ...
- jquery和Js的区别和基础操作
jqery的语法和js的语法一样,算是把js升级了一下,这两种语法可以一起使用,只不过是用jqery更加方便 一个页面想要使用jqery的话,先要引入一下jqery包,jqery包从网上下一个就可以, ...
- jQuery之ajax实现篇
jQuery的ajax方法非常好用,这么好的东西,你想拥有一个属于自己的ajax么?接下来,我们来自己做一个简单的ajax吧. 实现功能 由于jq中的ajax方法是用了内置的deferred模块,是P ...
- 利用snowfall.jquery.js实现爱心满屏飞
小颖在上一篇一步一步教你用CSS画爱心中已经分享一种画爱心的方法,这次再分享一种方法用css画爱心,并利用snowfall.jquery.js实现爱心满屏飞的效果. 第一步: 利用伪元素before和 ...
- jQuery的61种选择器
The Write Less , Do More ! jQuery选择器 1. #id : 根据给定的ID匹配一个元素 <p id="myId">这是第一个p标签< ...
- jquery.uploadify文件上传组件
1.jquery.uploadify简介 在ASP.NET中上传的控件有很多,比如.NET自带的FileUpload,以及SWFUpload,Uploadify等等,尤其后面两个控件的用户体验比较好, ...
- 浅谈 jQuery 核心架构设计
jQuery对于大家而言并不陌生,因此关于它是什么以及它的作用,在这里我就不多言了,而本篇文章的目的是想通过对源码简单的分析来讨论 jQuery 的核心架构设计,以及jQuery 是如何利用javas ...
随机推荐
- Spark SQL 官方文档-中文翻译
Spark SQL 官方文档-中文翻译 Spark版本:Spark 1.5.2 转载请注明出处:http://www.cnblogs.com/BYRans/ 1 概述(Overview) 2 Data ...
- iOS 判断内容是否是中文,两种实现
用category实现 新建类别文件,代码 .h文件 #import <Foundation/Foundation.h> @interface NSString (Valid) - (BO ...
- php cli方式下获取服务器ip
(未整理....) (1)php cli方式下获取服务器ip [php] function getServerIp(){ $ss = exec('/sbin/ifconfig et ...
- iframe 的使用和登陆退出的实现——整个页面跳转
iframe中如果只是页面跳转的话,我们依然只是部分的加载的了,为了实现整个页面的所有内容跳转,下面提供了整个页面跳转的方法. iframe例子 1.总的iframe页面(访问就访问这个) all. ...
- DedeCms文档关键词替换,优先替换长尾关键词
本文教大家:dedecms文档关键词维护之关键词出现多次,只给出现的第一个加链接的 举例:当文章中出现了一百次台历时,按官方的原理,他会给一百个台历都加上链接的.dedecms这如何是好? 解决方法( ...
- 解决PowerShell命令行窗口中不显示光标的问题
不知道什么原因,在有些系统上打开PowerShell命令行窗口后,光标无法显示.这种情况在Windows Server 2008/2012.Windows 8/9/10上都出现过,估计是由于某些系统软 ...
- PHP&MySQL(三)——数组
前一段忙着比赛忙着找实习,最后一地鸡毛,就是长长教训罢了.... 看书还是多必须的,试着高效的.踏实的做吧!! <?php //PHP数组其实能创建很多种数据结构,列表,堆栈,队列,树等 //数 ...
- MMORPG大型游戏设计与开发(概述)updated
1.定义 MMORPG,是英文Massive(或Massively)Multiplayer Online Role-PlayingGame的缩写,即大型多人在线角色扮演游戏. 2.技术与知识 在这系列 ...
- 「Mobile Testing Summit China 2016」 中国移动互联网测试大会-议题征集
时至北京盛夏,一场由 TesterHome 主办的关于移动互联网测试技术的盛会正在紧锣密鼓的筹备中.只要你关注软件质量,热爱测试,期待学习,都欢迎你加入这次移动测试技术大会中和我们一起分享经验.探讨话 ...
- Windows 常用 CMD 命令行介绍
看下面的链接: http://www.jianshu.com/p/76ff5d16f113