【JavaScript框架封装】实现一个类似于JQuery的属性框架的封装
// 属性框架
(function (xframe) {
// 需要参与链式访问的(必须使用prototype的方式来给对象扩充方法)
xframe.extend({
/**
* 获取/设置某一个元素的属性信息
* @return {*}
*/
attr: function () {
// 获取属性信息:两种格式,1. 取值模式 2.设置模式
var args = arguments;
if (args.length === 0) {
// 没有参数的话,就直接返回本身
return this;
} else if (args.length === 1) {
// 一个参数的话需要进行判断
if (typeof args[0] === 'string') {
// 取值模式
return this[0].getAttribute(args[0]);
} else if (typeof args[0] === 'object') {
// json对象的话也算是一个设置模式
for (var item in args[0]) {
Array.prototype.slice.call(this).each(function () {
this.setAttribute(item, args[0][item]);
});
}
}
} else if (args.length === 2) {
Array.prototype.slice.call(this).each(function () {
this.setAttribute(args[0], args[1]);
});
}
// 注意这里的this实际上返回的是一个xframe实例对象,但是xframe.eatend(xframe, {})这里的this实际上是一个xframe(selector, context)函数, 还没有实例化呢
return this;
},
/**
* 判断DOM元素节点是不是拥有某一个属性
* @param val
* @return {boolean}
*/
hasClass: function (val) {
if (!this[0]) {
return false;
}
// 默认只会获取第一个元素的相关信息
return this[0].className === val.trim() ? true : false;
},
/**
* 添加一个class class='xiugang 18 nan'
* @param val
*/
addClass: function (val) {
// 处理传进来的字符串两边的空格
val = val.trim();
[].slice.call(this).each(function () {
// 只要原来的DOM节点上面没有这个属性的话,就直接添加上去
if (val !== this.className) {
this.className += ' ' + val;
}
})
return this;
},
/**
* 注意熟练掌握replace()函数的使用
* @param val
*/
removeClass: function (val) {
val = val.trim();
[].slice.call(this).each(function () {
if (val === this.className) {
// 使用后面替换前面的
this.className = this.className.replace(val, '');
}
})
return this;
},
/**
* 如果有的话就直接删除,没有的话就添加一个
* @param val
* @return {toggleClass}
*/
toggleClass: function (val) {
val = val.trim();
[].slice.call(this).each(function () {
if (val === this.className) {
// 如果有的话就直接删除
this.className.replace(val, '');
} else {
// 没有的话就添加一个
this.className += ' ' + val;
}
});
return this;
}
});
// 不需要参与链式访问的
xframe.extend(xframe, {});
})(xframe);
【JavaScript框架封装】实现一个类似于JQuery的属性框架的封装的更多相关文章
- 【JavaScript框架封装】实现一个类似于JQuery的基础框架、事件框架、CSS框架、属性框架、内容框架、动画框架整体架构的搭建
/* * @Author: 我爱科技论坛 * @Time: 20180715 * @Desc: 实现一个类似于JQuery功能的框架 * V 1.0: 实现了基础框架.事件框架.CSS框架.属性框架. ...
- 分析一个类似于jquery的小框架
在网上下了一个类似于jQuery的小框架,分析源码,看看怎么写框架. 选择器Select //用沙箱闭包其整个代码,只有itcast和I暴漏在全局作用域 (function( window , und ...
- 【JavaScript框架封装】实现一个类似于JQuery的DOM框架的封装
// DOM框架(选择器框架) (function (xframe) { // 需要参与链式访问的(必须使用prototype的方式来给对象扩充方法) xframe.extend({ /** * 向现 ...
- 【JavaScript框架封装】实现一个类似于JQuery的缓存框架的封装
// 缓存框架 (function (xframe) { /** * 实现了缓存框架的临时存储功能(内存存储) * @type {{data: Array, get: (function(*): *) ...
- 【JavaScript框架封装】实现一个类似于JQuery的动画框架的封装
// 动画框架 (function (xframe) { // 需要参与链式访问的(必须使用prototype的方式来给对象扩充方法) xframe.extend({}); // 不需要参与链式访问的 ...
- 【JavaScript框架封装】实现一个类似于JQuery的选择框架的封装
// 选择框架 (function (xframe) { // 需要参与链式访问的(必须使用prototype的方式来给对象扩充方法) xframe.extend({}); // 不需要参与链式访问的 ...
- 【JavaScript框架封装】实现一个类似于JQuery的事件框架的封装
// 事件框架 (function (xframe) { // 需要参与链式访问的(必须使用prototype的方式来给对象扩充方法) xframe.extend({ /** * 实现一个浏览器的基本 ...
- 【JavaScript框架封装】实现一个类似于JQuery的内容框架的封装
// 内容框架 (function (xframe) { // 需要参与链式访问的(必须使用prototype的方式来给对象扩充方法) xframe.extend({ /** * .html()用为读 ...
- 分析一个类似于jquery的小框架 (2)
核心构造函数 (function ( window, undefined ) { // 定义Itcast构造函数 function Itcast ( selector ) { return new I ...
随机推荐
- js setTimeout函数
最近在看JS DOM编程艺术,在第十章的动画里面有个setTimeout函数的例子中涉及了很多的引号,研究了好大一会才看明白,综合网上各个大神的解释和自己的理解,其原理是这样的: 首先看下程序源代码: ...
- Java设计模式菜鸟系列(十五)建造者模式建模与实现
转载请注明出处:http://blog.csdn.net/lhy_ycu/article/details/39863125 建造者模式(Builder):工厂类模式提供的是创建单个类的模式.而建造者模 ...
- ZOJ 1654 Place the Robots(最大匹配)
Robert is a famous engineer. One day he was given a task by his boss. The background of the task was ...
- GNU TeXmacs 1.99.8 发布,所见即所得科学编辑器(看看老实的GUI)
GNU TeXmacs 1.99.8 已发布,这是一个支持各种数学公式的所见即所得编辑器,可以用来编辑文本.图形.数学.交互内容,它的界面非常友好,并且内置高质量的排版引擎. 更新内容: bug 修复 ...
- Nginx配置指令location匹配符优先级和安全问题
使用nginx 很久了,它的性能高,稳定性表现也很好,得到了很多人的认可.特别是它的配置,有点像写程序一样,每行命令结尾一个";"号,语句块用"{}"括起来. ...
- html5之文件操作
用来把文件读入内存,并且读取文件中的数据.FileReader接口提供了一个异步API,使用该API可以在浏览器主线程中异步访问文件系统,读取文件中的数据.到目前文职,只有FF3.6+和Chrome6 ...
- mysql视图,索引和存储过程
一:视图 视图又叫虚表.同真实的表一样,视图包含一系列带有名称的列和行数据.但是,视图并不在数据库中以存储的数据值集形式存在.行和列数据来自由定义视图的查询所引用的表,并且在引用视图时动态生成. 具体 ...
- Python笔记(十一)——数据抓取例子
上班时候想看股票行情怎么办?试试这个小例子,5分钟拉去一次股票价格,预警: #coding=utf-8 import re import urllib2 import time import thre ...
- node.js date-utils
前端引用 <script type="text/javascript" src="date-utils.min.js"></script> ...
- Android横屏时软键盘全屏问题
1.使用 SearchView xml加入 android:imeOptions="actionDone|flagNoExtractUi" 可以限制软键盘禁止全屏 <andr ...