jQuery 实战读书笔记之第四章:使用特性、属性和数据
使用属性
/*
每个元素都有一或多个特性,,这些特性的用途是给出相应元素或其内容的附加信息。(出自 JavaScript 高级程序设计)
*/
/*
特性是固有的 JavaScript 对象
属性指的是在标记中指定的 DOM 元素值
属性值的类型始终是字符串
*/
/*
如果属性存在相应的 DOM 的内置特性值,那么对象特性被同步
如果属性作为一个内建属性存在并且是一个布尔值,那么该值不会被同步
*/
var checkbox = document.getElementById('checkbox-1'); //属性在没有初始值的情况下为 null
console.log('The value of attribute of title: ' + checkbox.getAttribute('title'));
//特性在没有初始值的情况下为空
console.log('The value of property of title: ' + checkbox.title); console.log(checkbox.getAttribute('title') === checkbox.title); checkbox.title = 'New title!';
console.log(checkbox.getAttribute('title') === checkbox.title); checkbox.setAttribute('title', 'Another title!');
console.log(checkbox.getAttribute('title') === checkbox.title); /*
属性如果没有显式设置就是 null,而属性则根据类型有默认值
*/
console.log('The value of attribute of checked: ' + checkbox.getAttribute('checked'));
console.log('The value of property of checked: ' + checkbox.checked);
console.log(checkbox.getAttribute('checked') === checkbox.checked); /*
对属性支持的检测
*/
if('required' in document.createElement('input')){
console.log('The property of required is supported!')
}else{
console.log('The property of required is not supported!')
} /*
attr(name)
获取第一个匹配元素的属性值,属性名称大小写不敏感(JavaScript 本身是区分大小写的)
如果没有匹配元素或没有值,返回 undefined
*/
var attrValue = $('#li1').attr('data-level');
console.log('id 为 li1 的 li 元素的 data-level 属性值为 ' + attrValue); /*
如果属性不存在,返回的是 undefined
*/
var liName = $('#li1').attr('name');
console.log('id 为 li1 的 li 元素的 name 属性值为 ' + liName); /*
attr(name, value)
value(String|Number|Boolean|Function):除非设置的是函数,否则都会转换为字符串;函数的话,每个元素都会调用函数,传递的参数为
元素的索引和当前命名属性的值
返回 jQuery 集合
*/
var $titles = $('[title]').attr('title', function(index, previousValue){
return previousValue + ' I am element ' + index +
' and my name is ' + (this.id || 'unset');
});
console.log($titles); /*
attr(attributes)
一次指定多个属性值
*/
var $inputs = $('input:not(:submit)').attr({
value: '',
title: 'Please enter a value'
});
console.log('设置属性后的 input:');
console.log($inputs); /*
removeAttr(name)
删除属性
name(String):要删除的属性名称或者名称的集合,用空格分割
删除属性并不会删除 DOM 元素对应的特性
方法内部使用了 JS 的 removeAttribute()
返回的还是 jQuery 集合
*/
var $imgAfterDelAttr = $('img').removeAttr('title alt');
console.log('删除 title 和 alt 属性后的 img 集合: ');
console.log($imgAfterDelAttr); /*
可以使用 attr() 方法处理特性,也可以使用 prop() 方法
*/ /*
prop(name)
获取匹配集合中第一个元素给定的特性值
name(String)
如果没有匹配元素或没有值,返回 undefined
*/
console.log('id 为 checkbox-3 的 checkbox 的 checked 特性值:' + $('#checkbox-3').prop('checked')); /*
prop(name, value)
为集合的所有元素设置给定命名的特性和值
name(String)
value(Any|Function),如果是函数,传递的参数是集合中元素的索引及命名的属性的当前值
*/
$('input:checkbox').prop('checked', function(index, attrValue){
if(index % 2 == 0){
console.log(attrValue);
//attrValue = true; //这样设置了没有起作用
$(this).prop('checked', true);
}
}); /*
prop(properties)
properties(Object)
*/
$(':submit').prop({
disabled: true,
class: 'red-border'
}); /*
removeProp(name)
删除集合中每个元素的特性
name(String):不支持以空格分割的名称列表
这个方法不应该用来删除原生特性,比如 required 和 checked,删除后无法再次添加
*/
$('#checkbox-4').removeProp('checked').prop('checked', true); //啥情况??? /*
data(name, value)
为集合中的所有元素添加传递的数据
name(String)
value(Any):除了 undefined
可以保存数据的类型
*/
$('#li4').data('last-value', 10);
console.log(typeof $('#li4').attr('lastValue')); //undefined???说好的 String 呢? last-value 转换为 lastValue 是 jQuery3 修改的
console.log(typeof $('#li4').data('last-value')); /*
对自定义属性 data-technologies 的两种读法
*/
console.log($('#li4').attr('data-technologies'));
console.log($('#li4').data('technologies')); /*
data(Object)
略
*/ /*
jQuery.data() 等价的低级方法 $.data()
*/
$.data(document.getElementById('li3'), 'price', 55);
$('#li2').data('price', 55); /*
data([name])
使用指定的名字查询存储的数据或 HTML5 data-* 属性,如果没有指定名字,返回所有存储的数据
name(String)
如果没有匹配元素或没有值,返回 undefined
*/
console.log($('#li2').data('price'));
console.log($('#li4').data()); //只取了 data-* 开头的数据和用 data(name, value) 设定的数据 /*
jQuery 有一个存储区,是存储 jQuery 内部使用的存储数据的区域
data() 方法会先查找内存中的数据,找不到才会用指定的名字去查找 HTML 元素的 data-* 属性,如果找到了那么就会把
值存放到内存中,所以之后用 attr() 对该属性做修改再用 data() 取还是内存中的数据
*/
console.log($('#level').data('custom'));
console.log($('#level').attr('data-custom'));
$('#level').data('custom', 'new value');
console.log($('#level').data('custom'));
console.log($('#level').attr('data-custom')); //这里读到的还是老的“foo”,上面的语句修改的是内存中的吗??? /*
removeData([name]) == $.removeData(element[, name])
name(String|Array) 要删除的数据的数据名,包括名字或以空格分割的名字,也可以是数组;如果没有参数,删除所有数据
*/
$('#li3').removeData('custom', 'technologies');
$('#li3').removeData('custom technologies'); /*
jQuery.hasData(element)
*/
console.log('id 为 li4 的元素是否包含自定义数据:' + $.hasData(document.getElementById('li4')));
jQuery 实战读书笔记之第四章:使用特性、属性和数据的更多相关文章
- jQuery 实战读书笔记之第六章:事件本质
理解浏览器事件模型 understandEventModel.html 代码: <!DOCTYPE HTML> <html> <head> <title> ...
- jQuery 实战读书笔记之第五章:使用 jQuery 操作页面
html 如下: <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> &l ...
- jQuery 实战读书笔记之第三章:操作 jQuery 集合
创建新 HTML 元素 $('<div>Hello</div>'); /* 创建等价的空 div 元素 */ $('<div>'); $('<div /> ...
- 05 技术内幕 T-SQL 查询读书笔记(第四章)
第四章 子查询:在外部查询内嵌套的内部查询(按照期望值的数量分为,标量子查询 scalar subqueries,多值子查询multivalued subqueries)(按照子查询对外部查询的依赖性 ...
- Linux内核分析 读书笔记 (第四章)
第四章 进程调度 调度程序负责决定将哪个进程投入运行,何时运行以及运行多长时间.进程调度程序可看做在可运行态进程之间分配有限的处理器时间资源的内核子系统.只有通过调度程序的合理调度,系统资源才能最大限 ...
- 《深入理解java虚拟机》读书笔记三——第四章
第四章 虚拟机性能监控与故障处理工具 1.JDK命令行工具 jps命令: 作用:列出正在运行的虚拟机进程. 格式:jps [option] [hostid] 选项:-q 只输出LVMID(Local ...
- jQuery 实战读书笔记之第二章:选择元素
基本选择器 html 代码如下,后面的 js 使用的 html 基本大同小异. <!doctype html> <html> <head> <title> ...
- 《机器学习实战》学习笔记第十四章 —— 利用SVD简化数据
相关博客: 吴恩达机器学习笔记(八) —— 降维与主成分分析法(PCA) <机器学习实战>学习笔记第十三章 —— 利用PCA来简化数据 奇异值分解(SVD)原理与在降维中的应用 机器学习( ...
- C primer plus 读书笔记第十四章
这一章主要介绍C语言的结构和其他数据形式,是学习算法和数据结构的重点. 1.示例代码 /*book.c -- 仅包含一本书的图书目录*/ #include <stdio.h> #defin ...
随机推荐
- Cannot generate SSPI context
请在参考如下文章前,重启服务器解决! 相信我 没错的! http://support.microsoft.com/kb/811889
- Oracle两个时间段是否重合、冲突
经常会碰到比较两个时间段是否冲突的情况. 思路1 最开始比较2个时间是否的思路是,时间段的重叠. 但是比较时间段重叠的情况,就有几种情况, 1. 时间前段冲突. 时间A: 2015-10-01 ...
- phpcms v9 wap手机门户站点内容页添加上一篇、下一篇的方法
PHP源码修改:打开 phpcms\modules\wap\index.php 文件找到if(!$r || $r['status'] != 99) showmessage(L('info_does_n ...
- 【Shell】linux中shell变量$#,$@,$0,$1,$2的含义解释 && set 关键字使用
linux中shell变量$#,$@,$0,$1,$2的含义解释 摘抄自:ABS_GUIDE 下载地址:http://www.tldp.org/LDP/abs/abs-guide.pdf linu ...
- fc游戏反编译流程
最近打算玩一下nes游戏,重拾一下6502汇编. 摸索了几天,觉得下面这个反汇编的流程比较好: 用 fceux 载入游戏,选择debug菜单Code/Data Logger,点击Start,稍微玩一下 ...
- 解决Xcode 6 编译Cocos2d-x iOS项目失败
在Xcode 6 beta里编译Cocos2d-x iOS项目时可能会失败,提示如下错误: Undefined symbols for architecture i386: "_fwrite ...
- 文字溢出显示省略号,兼容ie9以上浏览器
最近遇上一个问题,文字溢出展示省略号在ie上不管用,经过查找,是少了word-wrap: normal;这个css属性 width:100px; overflow: hidden; white-spa ...
- 算法笔记_079:蓝桥杯练习 区间k大数查询(Java)
目录 1 问题描述 2 解决方案 1 问题描述 问题描述 给定一个序列,每次询问序列中第l个数到第r个数中第K大的数是哪个. 输入格式 第一行包含一个数n,表示序列长度. 第二行包含n个正整数,表 ...
- Docker学习笔记之二,基于Dockerfile搭建JAVA Tomcat运行环境
前言 在第一篇文字中,我们完全人工方式,一个命令一个命令输入,实现一个 java tomcat运行环境,虽然也初见成效,但很累人.如果依靠依靠脚本构建一个Tomcat容器实例,一个命令可以搞定,何乐而 ...
- bootstrap学习笔记 插件概述
Bootstrap插件概览 在前面布局组件章节中所讨论的组件仅仅是个开始.Bootstrap自带的12种jQuery插件,扩展了功能,可以给站点添加更多的互动.即使您不是一名高级的js开发人员, 你也 ...