使用属性


/*
每个元素都有一或多个特性,,这些特性的用途是给出相应元素或其内容的附加信息。(出自 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 实战读书笔记之第四章:使用特性、属性和数据的更多相关文章

  1. jQuery 实战读书笔记之第六章:事件本质

    理解浏览器事件模型 understandEventModel.html 代码: <!DOCTYPE HTML> <html> <head> <title> ...

  2. jQuery 实战读书笔记之第五章:使用 jQuery 操作页面

    html 如下: <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> &l ...

  3. jQuery 实战读书笔记之第三章:操作 jQuery 集合

    创建新 HTML 元素 $('<div>Hello</div>'); /* 创建等价的空 div 元素 */ $('<div>'); $('<div /> ...

  4. 05 技术内幕 T-SQL 查询读书笔记(第四章)

    第四章 子查询:在外部查询内嵌套的内部查询(按照期望值的数量分为,标量子查询 scalar subqueries,多值子查询multivalued subqueries)(按照子查询对外部查询的依赖性 ...

  5. Linux内核分析 读书笔记 (第四章)

    第四章 进程调度 调度程序负责决定将哪个进程投入运行,何时运行以及运行多长时间.进程调度程序可看做在可运行态进程之间分配有限的处理器时间资源的内核子系统.只有通过调度程序的合理调度,系统资源才能最大限 ...

  6. 《深入理解java虚拟机》读书笔记三——第四章

    第四章 虚拟机性能监控与故障处理工具 1.JDK命令行工具 jps命令: 作用:列出正在运行的虚拟机进程. 格式:jps [option] [hostid] 选项:-q 只输出LVMID(Local ...

  7. jQuery 实战读书笔记之第二章:选择元素

    基本选择器 html 代码如下,后面的 js 使用的 html 基本大同小异. <!doctype html> <html> <head> <title> ...

  8. 《机器学习实战》学习笔记第十四章 —— 利用SVD简化数据

    相关博客: 吴恩达机器学习笔记(八) —— 降维与主成分分析法(PCA) <机器学习实战>学习笔记第十三章 —— 利用PCA来简化数据 奇异值分解(SVD)原理与在降维中的应用 机器学习( ...

  9. C primer plus 读书笔记第十四章

    这一章主要介绍C语言的结构和其他数据形式,是学习算法和数据结构的重点. 1.示例代码 /*book.c -- 仅包含一本书的图书目录*/ #include <stdio.h> #defin ...

随机推荐

  1. Python自然语言处理资料库

    1.LTP [1]- 语言技术平台(LTP) 提供包括中文分词.词性标注.命名实体识别.依存句法分析.语义角色标注等丰富. 高效.精准的自然语言处理技术.经过哈工大社会计算与信息检索研究中心 11 年 ...

  2. 在android中画圆形图片的几种办法

    在开发中常常会有一些需求,比方显示头像,显示一些特殊的需求,将图片显示成圆角或者圆形或者其它的一些形状. 可是往往我们手上的图片或者从server获取到的图片都是方形的.这时候就须要我们自己进行处理, ...

  3. Swing JTable 具体解释

    改变列头 flightTable.getTableHeader().setDefaultRenderer(new TableCellRenderer() { public Component getT ...

  4. sip

    INVITE sip:10010101402@10.7.36.70:5060 SIP/2.0 Via: SIP/2.0/UDP 10.7.36.250:5060;rport;branch=z9hG4b ...

  5. MySQL删除表的时候忽略外键约束

    删除表不是特别常用,特别是对于存在外键关联的表,删除更得小心.但是在开发过程中,发现Schema设计的有问题而且要删除现有的数据库中所有的表来重新创建也是常有的事情:另外在测试的时候,也有需要重新创建 ...

  6. WebDriver API——第3部分Action Chains

    The ActionChains implementation, class selenium.webdriver.common.action_chains.ActionChains(driver) ...

  7. IntelliJ IDEA15,PhpStorm10,WebStorm11激活破解

    此方法可用于激活IntelliJ IDEA15,PhpStorm10,WebStorm11等系列JetBrains产品.仅供参考,请支持正版. 最新方法:http://15.idea.lanyus.c ...

  8. C语言中函数和指针的參数传递

    近期写二叉树的数据结构实验.想用一个没有返回值的函数来创建一个树,发现这个树就是建立不起来,那么我就用这个样例讨论一下c语言中指针作为形參的函数中传递中隐藏的东西. 大家知道C++中有引用的概念,两个 ...

  9. struts2自定义登录拦截器

    版权声明:本文为博主原创文章,未经博主允许不得转载. (1)配置web.xml,让xml加载struts2框架 <?xml version="1.0" encoding=&q ...

  10. hibernate EJBQL QBC QBE

    在功能方面是本地SQL>HQL>EJBQL>QBC>QBE   假想一个BBS.   板块: package com.bjsxt.hibernate; import javax ...