本篇文章梳理一下jQuery中获取、增长、移除元素的属性;获取、添加元素的文本内容以及操做元素的样式。css
原生js中操做特性的DOM方法主要有3个,getAttribute方法、setAttribute方法和removeAttribute方法,就算如此在实际操做中仍是会存在不少问题。而在jQuery中用attr()与removeAttr()就能够所有搞定了,包括兼容问题。html
jQuery中用attr()方法来获取和设置元素属性,attr是attribute(属性)的缩写,在jQuery DOM操做中会常常用到attr()。html5
attr()有4个表达式node
removeAttr()删除方法jquery
.removeAttr( attributeName ) : 为匹配的元素集合中的每一个元素中移除一个属性(attribute)windows
注意的问题:数组
dom中有个概念的区分:Attribute和Property翻译出来都是“属性”,《js高级程序设计》书中翻译为“特性”和“属性”。简单理解,Attribute就是dom节点自带的属性浏览器
例如:html中经常使用的id、class、title、align等:缓存
<div id="demo" title="实例"></div>
复制代码
而Property是这个DOM元素做为对象,其附加的内容,例如,tagName, nodeName, nodeType,, defaultChecked, 和 defaultSelected,原生js中咱们能够获取DOM节点而后控制台打印DOM节点.__proto__
能够 查看。性能优化
在jQuery中咱们可使用.prop()方法进行取值或赋值等。
获取Attribute就须要用attr,获取Property就须要用prop
读取、修改元素的html结构或者元素的文本内容是常见的DOM操做,jQuery针对这样的处理提供了2个便捷的方法.html()与.text()
.html()方法
获取集合中第一个匹配元素的HTML内容 或 设置每个匹配元素的html内容
具体有3种用法:
注意事项:
.html()方法内部使用的是DOM的innerHTML属性来处理的,因此在设置与获取上须要注意的一个最重要的问题,这个操做是针对整个HTML内容(不只仅只是文本内容)
.text()方法
获得匹配元素集合中每一个元素的文本内容结合,包括他们的后代,或设置匹配元素集合中每一个元素的文本内容为指定的文本内容。
具体有3种用法:
注意事项:
.text()结果返回一个字符串,包含全部匹配元素的合并文本
.html与.text的异同:
jQuery中有一个.val()方法主要是用于处理表单元素的值,好比 input, select 和 textarea。
.val()方法
注意事项:
multiple 属性规定可同时选择多个选项。<select multiple="multiple">
在不一样操做系统中,选择多个选项的差别:
在HTML结构中里,多个class以空格分隔,当一个节点(或称为一个标签)含有多个class时,DOM元素响应的className属性获取的不是class名称的数组,而是一个含有空格的字符串,这就使得多class操做变得很麻烦。一样的jQuery开发者也考虑到这种状况,增长了一个.addClass()方法,用于动态增长class类名.
.addClass( className )方法
注意事项:
.addClass()方法不会替换一个样式类名。它只是简单的添加一个样式类名到元素上。
jQuery经过.addClass()方法能够很便捷的增长样式。若是须要样式之间的切换,一样jQuery提供了一个很方便的.removeClass(),它的做用是从匹配的元素中删除所有或者指定的class
.removeClass( )方法
注意事项
若是一个样式类名做为一个参数,只有这样式类会被从匹配的元素集合中删除 。 若是没有样式名做为参数,那么全部的样式类将被移除
经过JavaScript获取dom元素上的style属性,咱们能够动态的给元素赋予样式属性。在jQuery中咱们要动态的修改style属性咱们只要使用css()方法就能够实现了
.css() 方法:获取元素样式属性的计算值或者设置元素的CSS属性
获取:
设置:
注意事项:
addClass与css方法,二者之间有什么区别呢?
可维护性:
.addClass()的本质是经过定义个class类的样式规则,给元素添加一个或多个类。css方法是经过JavaScript大量代码进行改变元素的样式
经过.addClass()咱们能够批量的给相同的元素设置统一规则,变更起来比较方便,能够统一修改删除。若是经过.css()方法就须要指定每个元素是一一的修改,往后维护也要一一的修改,比较麻烦
灵活性:
经过.css()方式能够很容易动态的去改变一个样式的属性,不须要在去繁琐的定义个class类的规则。通常来讲在不肯定开始布局规则,经过动态生成的HTML代码结构中,都是经过.css()方法处理的
样式值:
.addClass()本质只是针对class的类的增长删除,不能获取到指定样式的属性的值,.css()能够获取到指定的样式值。
样式的优先级:
css的样式是有优先级的,当外部样式、内部样式和内联样式同同样式规则同时应用于同一个元素的时候,优先级以下
外部样式 < 内部样式 < 内联样式复制代码
经过.css方法设置的样式属性优先级要高于.addClass方法
总结:
.addClass与.css方法各有利弊,通常是静态的结构,都肯定了布局的规则,能够用addClass的方法,增长统一的类规则 若是是动态的HTML结构,在不肯定规则,或者常常变化的状况下,通常多考虑.css()方式
html5 dataset是新的HTML5标准,容许你在普通的元素标签里嵌入相似data-*的属性,来实现一些简单数据的存取。它的数量不受限制,而且也能由JavaScript动态修改,也支持CSS选择器进行样式设置。这使得data属性特别灵活,也很是强大。有了这样的属性咱们可以更加有序直观的进行数据预设或存储。那么在不支持HTML5标准的浏览器中,咱们如何实现数据存取? jQuery就提供了一个.data()的方法来处理这个问题
使用jQuery初学者通常不是很关心data方式,这个方法是jquery内部预用的,能够用来作性能优化,好比sizzle选择中能够用来缓存部分结果集等等。固然这个也是很是重要的一个API了,经常用于咱们存放临时的一些数据,由于它是直接跟DOM元素对象绑定在一块儿的
jQuery提供的存储接口
jQuery.data( element, key, value ) //静态接口,存数据
jQuery.data( element, key ) //静态接口,取数据
.data( key, value ) //实例接口,存数据
.data( key ) //实例接口,取数据复制代码
2个方法在使用上存取都是通一个接口,传递元素,键值数据。在jQuery的官方文档中,建议用.data()方法来代替。
咱们把DOM能够看做一个对象,那么咱们往对象上是能够存在基本类型,引用类型的数据的,可是这里会引起一个问题,可能会存在循环引用的内存泄漏风险
经过jQuery提供的数据接口,就很好的处理了这个问题了,咱们不须要关心它底层是如何实现,只须要按照对应的data方法使用就好了
一样的也提供2个对应的删除接口,使用上与data方法实际上是一致的,只不过是一个是增长一个是删除罢了
jQuery.removeData( element [, name ] )
.removeData( [name ] )复制代码