1、行内样式操作

  • 目标:扩展框架实现行内样式的增删改查

1.1 创建 css 方法

  • 目标:实现单个样式或者多个样式的操作

1.1.1 css方法 -获取样式

  • 注意:使用 style 属性只能获取行内样式
  • 解释:获取类或者外部样式文件中设置的样式要使用
    • W3C规范:window.getComputedStyle(dom)
    • IE中 :dom.currentStyle
itcast.fn.extend({
css: function(name, value) {
return window.getComputedStyle(this[0])[name];
}
});

1.1.2 css方法 -设置样式

  • 解释:两个参数表示设置样式
itcast.fn.extend({
css: function(name, value) {
if(value === undefined) {
return window.getComputedStyle(this[0])[name];
} return this.each(function() {
this.style[name] = value;
});
}
});

1.1.3 css方法 -对象字面量参数

  • 解释:参数为对象字面量同时设置多个样式属性
itcast.fn.extend({
css: function(name, value) {
if(value === undefined) {
if(typeof name === "object") {
return this.each(function() {
for(var k in name) {
this.style[k] = name[k];
}
});
} return window.getComputedStyle(this[0])[name];
} else {
return this.each(function() {
this.style[name] = value;
});
}
}
});

2、类操作

  • 目标:扩展框架实现类样式的增删改查

2.1 hasClass方法 -判断有没有类

  • 注意:判断匹配的所有元素中是否具有指定的类
itcast.fn.extend({
hasClass: function(cName) {
var hasCName = false;
// 判断第一个元素
itcast.each(this[0].className.split(" "), function(i, v) {
if(v === cName) {
hasCName = true;
return false;
}
});
return hasCName; // 判断所有元素
// this.each(function() {
// hasCName = (" " + this.className + " ")
// .indexOf( " " + trim(cName) + " ") !== -1;
// if(hasCName) {
// hasCName = true;
// return false;
// }
// });
// return hasCName;
}
});

2.2 addClass方法 -添加类

itcast.fn.extend({
addClass: function(cName) {
return this.each(function() {
var className = this.className;
className += " " + cName;
this.className = itcast.trim(className);
});
}
});

2.3 removeClass -移除类

itcast.fn.extend({
removeClass: function(cName) {
return this.each(function() {
var cArr = this.className.split(" "),
i, len = cArr.length; for(i = 0; i < len; i++) {
if(cArr[i] === cName) {
break;
}
} cArr.splice(i, 1);
this.className = cArr.join(" "); // 2 replace 替换
// var className = " " + this.className + " ";
// this.className = itcast.trim(className.replace(" " + cName + " ", " ")); // 处理多个相同类名的情况
// var clsName = " " + this.className.trim() + " ";
// while(clsName.indexOf(" " + name + " ") > -1) {
// clsName = clsName.replace(" " + name + " ", " ");
// }
// this.className = clsName.trim();
});
}
});

2.4 toggleClass -切换类

itcast.fn.extend({
toggleClass: function(cName) {
if(this.hasClass(cName)) {
this.removeClass(cName);
} else {
this.addClass(cName);
}
return this;
}
});

3、属性模块

3.1 演示jQuery中的相关方法

  • 目标:复习jQuery中常用的属性操作方法
  • 内容:attr / val / html / text
  • 特点:
    • 设置:给所有匹配到的元素设置
    • 读取:只获取第一个元素的属性或内容

3.2 attr方法 -属性操作

  • 注意:setAttribute 只能用来设置默认值。要访问或修改当前值,使用 elt[name] = value 代替
itcast.fn.extend({
attr: function(name, value) {
if(value === undefined) {
return this[0].getAttribute(name);
} return this.each(function() {
// this.setAttribute(name, value);
this[name] = value;
});
}
});
  • 案例:随机切换图片

3.3 表单值操作

itcast.fn.extend({
val: function(value) {
if(value === undefined) {
return this[0].value;
} return this.each(function() {
this.value = value;
});
}
});

3.4 html 和 text操作

3.4.1 html 操作

itcast.fn.extend({
html: function(html) {
if(html === undefined) {
return this[0].innerHTML;
} return this.each(function() {
this.innerHTML = html;
});
}
});

3.4.2 text 操作

  • 注意:innerText是非标准属性
itcast.extend({
getInnerText: function(dom) {
var textArr;
if(dom.innerText !== undefined) {
return dom.innerText;
}
textArr = getNodeText(dom);
return textArr.join(""); function getNodeText(node) {
var cNodes = node.childNodes,
len = cNodes.length, i, cNode,
arr = []; for(i = 0; i < len; i++) {
cNode = cNodes[i];
if(cNode.nodeType === 3) {
arr.push(cNode.nodeValue);
} else if(cNodes.nodeType === 1) {
arr = arr.concat( getNodeText(cNode) );
}
}
return arr;
}
},
setInnerText: function(dom, str) {
if("innerText" in dom) {
dom.innerText = str;
} else {
dom.innerHTML = "";
dom.appendChild( document.createTextNode(str) );
}
}
}); itcast.fn.extend({
text: function(text) {
if(text === undefined) {
return itcast.getInnerText(this[0]);
} return this.each(function() {
itcast.setInnerText(this, text);
});
}
});

jQuery中样式和属性模块简单分析的更多相关文章

  1. jquery中attr和prop的区别分析

    这篇文章主要介绍了jquery中attr和prop的区别分析的相关资料,需要的朋友可以参考下 在高版本的jquery引入prop方法后,什么时候该用prop?什么时候用attr?它们两个之间有什么区别 ...

  2. rocketmq中的NettyRemotingClient类的简单分析

    rocketmq中的NettyRemotingClient类的简单分析 Bootstrap handler = this.bootstrap.group(this.eventLoopGroupWork ...

  3. java 中 “文件” 和 “流” 的简单分析

    java 中 FIle 和 流的简单分析 File类 简单File 常用方法 创建一个File 对象,检验文件是否存在,若不存在就创建,然后对File的类的这部分操作进行演示,如文件的名称.大小等 / ...

  4. DELPHI中完成端口(IOCP)的简单分析(4)

    DELPHI中完成端口(IOCP)的简单分析(4)   在我以前写的文章中,一直说的是如何接收数据.但是对于如何发送数据却一点也没有提到.因为从代码量上来说接收的代码要比发送多很多.今天我就来写一下如 ...

  5. DELPHI中完成端口(IOCP)的简单分析(3)

    DELPHI中完成端口(IOCP)的简单分析(3)   fxh7622关注4人评论7366人阅读2007-01-17 11:18:24   最近太忙,所以没有机会来写IOCP的后续文章.今天好不容易有 ...

  6. DELPHI中完成端口(IOCP)的简单分析(2)

    DELPHI中完成端口(IOCP)的简单分析(2)   今天我写一下关于DELPHI编写完成端口(IOCP)的工作者线程中的东西.希望各位能提出批评意见.上次我写了关于常见IOCP的代码,对于IOCP ...

  7. DELPHI中完成端口(IOCP)的简单分析(1)

    DELPHI中完成端口(IOCP)的简单分析(1)   用DELPHI开发网络代码已经有一段时间了! 我发现在网上用VC来实现完成端口(IOCP)的代码很多,但是使用DELPHI来实现的就比较少了.对 ...

  8. jQuery - 02. 样式表属性操作/类操作、动画、显示隐藏、滑入、淡入、停止动画、节点操作、添加对象、清空节点

    样式表属性操作.css $("div").css({'width':100,'height':100,'background':'red'}); $("div" ...

  9. JQuery中常用的 属性选择器

    jQuery中使用$()作为选择符极大提高工作效率以及方便快捷;一些常用属性的选择器由以下几种 1) $('#id') id选择器 2) $('.class') css选择器,class类名 3) $ ...

随机推荐

  1. 洛谷P1616 疯狂的采药【完全背包】

    题目描述 LiYuxiang是个天资聪颖的孩子,他的梦想是成为世界上最伟大的医师.为此,他想拜附近最有威望的医师为师.医师为了判断他的资质,给他出了一个难题.医师把他带到一个到处都是草药的山洞里对他说 ...

  2. CSS学习笔记之样式声明

    目录 1.背景 2.文本 3.字体 4.列表 5.表格 6.轮廓 在这篇文章中你能看到有关于 CSS 样式设置的常用属性,文章的目录如下: 1.背景 (1)背景颜色 可以使用 background-c ...

  3. 3分钟实现小程序唤起微信支付 Laravel教程

    微信支付的接入,如果不使用成熟的开发包,将是巨大的工作量. 依赖 EasyWechat 先在 laravel 项目中依赖 easywechat 这个包 composer require "o ...

  4. python笔记之json报错

    写爬虫的过程中不免遇到处理json数据的情况,今天在爬取新华网新闻数据时发现使用json.loads函数时报错: json.decoder.JSONDecodeError: Expecting val ...

  5. c++0x11新特性:delete删除函数

    c_plus_plus_0x11.cpp: // c_plus_plus_0x11.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #inc ...

  6. poj 1523 求割点把一个图分成几个联通部分

    #include<stdio.h> #include<string.h> #define N 1100 struct node { int u,v,next; }bian[N* ...

  7. lca学习题

    http://www.cnblogs.com/scau20110726/archive/2013/06/14/3135095.html

  8. eclipse jvm调优

    1.初始参数 -Xms256m-Xmx1024m 2.在eclipse.ini中加入,注意一点的是D:/soft/eclipse-jee,这个目录必须存在,启动时并不会自动目录 -verbose:gc ...

  9. [bzoj3062][Usaco13Feb]Taxi_贪心

    Taxi bzoj-3062 Usaco13Feb 题目大意:有n个奶牛想坐出租车.第i头奶牛在起点a[i]等候,想坐出租车到b[i].Bessie从0出车,车上只能坐一头奶牛.她必须完成所有奶牛的要 ...

  10. [Javascript Crocks] Recover from a Nothing with the `alt` method

    Once we’re using Maybes throughout our code, it stands to reason that at some point we’ll get a Mayb ...