JQuery模块分析及其实现第三部分属性模块功能及实现,接第二部分!
知识点复习
css
方法- 如果只传入一个参数
- 如果参数类型为对象,表示同时设置多个样式
- 如果参数类型为字符串,表示获取指定的样式值
- 如果传入的两个参数,表示设置单个样式值
- 如果只传入一个参数
itcast.each
方法: 遍历数组或伪数组- 第一个参数,指定遍历的对象
- 第二个参数,指定的回调函数,对遍历到的每一个元素,进行相关处理
attr方法( setAttribute 和 getAttribute )
- 功能: 获取(设置)属性节点值
- 实现思路
- 给原型添加
attr
方法,定义两个参数:属性节点名字name
以及属性节点值 - 如果只传入一个参数
- 如果参数类型为对象,表示设置多个节点值
- 否则获取指定的属性节点值(默认获取第一个
dom
元素的属性节点值)
- 如果传入两个参数,表示设置单个属性节点值.
- 给原型添加
1 | attr: function(name,value){ |
html方法
- 功能:
- 不传参数,表示获取指定
dom
元素的innerHTML
属性值 - 否则,表示设置指定
dom
元素的innerHTML
属性
- 不传参数,表示获取指定
- 实行思路
- 判断是否传入参数
- 如果没穿,获取
itcast
对象上的第一个dom
元素的innerHTML
属性值 - 否则,给
itcast
对象上的每一个dom
元素设置innerHTML
属性
1 | html: function(html) { |
text方法
- 功能
- 不传值,表示获取文本节点(返回的是后代中所有文本节点值)
- 传值,设置指定
dom
元素文本值
- 实现思路
- 如果不传值,优先考虑浏览器是否支持
textContent
属性- 如果支持,就使用
textContent
返回结果集中每一个dom
元素的文本节点值 - 否则,就是用
innerText
返回结果集中每一个dom
元素的文本节点值
- 如果支持,就使用
- 如果传值,给
itcast
对象上的每一个dom
元素设置文本节点值.- 如果支持
textContent
属性,就是用该属性设置文本 - 否则,就是用
innerText
来设置文本.
- 如果支持
- 如果不传值,优先考虑浏览器是否支持
1 | text: function(text) { |
val方法
- 功能(
value
属性)- 如果不传值,表示获取输入框的文本值
- 如果传值, 表示给输入框 设置文本
- 实现思路
- 如果不传值,表示获取输入框的文本值(获取第一个文本框值)
- 如果传值,表示给输入框 设置文本
- 遍历每一个输入框,同时给其设置文本
1
2
3
4
5
6
7
8
9
10
11val: function(value) {
// 如果没有传值,表示获取第一个dom元素的value属性值
// 如果itcast对象上没有任何dom元素,返回空字符串
if(value == undefined){
return this[0] ? this[0].value : '';
} else {// 否则,为每一个dom元素设置value属性值
return this.each(function() {
this.value = value;
});
}
}
- 遍历每一个输入框,同时给其设置文本
prop方法
- 功能:和
attr
相似- 注意: 有些属性名称,比如
for
,class
是保留字或关键字不能作为对象属性名称,所以要创建一个对象,需要转换这类的属性 - 定义
propFix
对象,存储上述属性到这属性名称的映射关系 - 如果只传入一个参数
- 类型为对象,同时给
dom
对象添加属性 - 类型为字符串,获取
itcast
对象上的第一个dom
对象的指定属性值
- 类型为对象,同时给
- 如果传入的参数,给所有的
dom
对象添加单个属性 - 细节: 无论是设置还是获取属性,在操作之前,先要从
propFix
对象拿到映射后的属性名称- 如果拿到的心的属性名称不为
undefined
,就用映射后的属性名来操作dom
对象 - 否则,那么久使用旧的属性名称来操作
dom
对象.
- 如果拿到的心的属性名称不为
- 注意: 有些属性名称,比如
1 | // 属性模块 |