jQuery操作属性和样式详解


Posted in Javascript onApril 13, 2016

• 区分 DOM 属性和元素属性

<img src="images/image.1.jpg" id="hibiscus" alt="Hibiscus" class="classA" />

通常开发人员习惯将id,src,alt等叫做这个元素的"属性"。我们将其称为"元素属性"。但是在解析成 DOM 对象时,实际浏览器最后会将标签元素解析成"DOM 对象", 并且将元素的"元素属性"存储为"DOM 属性",两者是有区别的。

甚至有些"元素属性"和"DOM 属性"的名称都不一样,比如上面的元素属性 class, 转换为 DOM 属性后对应 className。

牢记, 在 javascript 中我们可以直接获取或设置"DOM 属性":

<script type="text/javascript">
  $(function() {
    var img1 = document.getElementById("hibiscus");
    alert(img1.alt);
    img1.alt = "Change the alt element attribute";
    alert(img1.alt);
    img1.className = "classB";
  })
</script>

所以如果要设置元素的 CSS 样式类, 要使用的是 DOM 属性"className"而不是元素属性"class"。
--------------------------------------------------------------------------------
•操作"Dom 属性"

在 jQuery 提供了each()函数用于遍历 jQuery 包装集,其中的this指针是一个 DOM 对象,所以我们可以应用这一点配合原生 javascript 来操作元素的 DOM 属性:

$("img").each(function(index) {
   alert("index:" + index + ", id:" + this.id + ", alt:" + this.alt);
   this.alt = "changed";
   alert("index:" + index + ", id:" + this.id + ", alt:" + this.alt);
 });

•操作"元素属性"

我们可以使用 javascript 中的getAttribute和setAttribute来操作元素的"元素属性"。在 jQuery 中给你提供了attr()包装集函数, 能够同时操作包装集中所有元素的属性:

jQuery操作属性和样式详解

虽然我们可以使用removeAttr(name)删除元素属性,但是对应的 DOM 属性是不会被删除的, 只会影响 DOM 属性的值.比如将一个input元素的readonly元素属性去掉,会导致对应的 DOM 属性变成false(即input变成可编辑状态).

•修改 CSS 类和样式

下表是修改 CSS 类相关的 jQuery 方法:

jQuery操作属性和样式详解

注意addClass(class)和removeClass(classes)的参数可以一次传入多个 css 类, 用空格分割。removeClass 方法的参数可选, 如果不传入参数则移除全部 CSS 类。

同样当我们想要修改元素的具体某一个 CSS 样式,即修改元素属性"style"时, jQuery 也提供了相应的方法:

jQuery操作属性和样式详解

• 获取常用属性

<!doctype html>
<html lang="zh">
<head>
 <meata charset="utf-8"/>
 <title>get object width</title>
 <script src="jquery-1.11.2.min.js"></script>
 <script>
  $(function() {
   alert("attr(\"width\"):" + $("#testDiv").attr("width")); //undifined
   alert("css(\"width\"):" + $("#testDiv").css("width")); //auto(ie6) 或 1264px(ff)
   alert("width():" + $("#testDiv").width()); //正确的数值 1264
   alert("style.width:" + $("#testDiv")[0].style.width); //空值
  })
 </script>
</head>
<body>
 <div id="testDiv">test text</div>
</body>
</html>

我们希望获取测试图层的宽度,使用 attr 方法获取"元素特性"为 undefined, 因为并没有为 div 添加 width。而使用 css()方法虽然可以获取到 style 属性的值, 但是在不同浏览器里返回的结果不同,IE6 下返回 auto,而 FF 下虽然返回了正确的数值但是后面带有"px"。所以 jQuery 提供了 width()方法,此方法返回的是正确的不带 px 的数值。

针对上面的问题,jQuery 为常用的属性提供了获取和设置的方法,比如 width()用户获取元素的宽度,而 width(val)用来设置元素宽度。

下面这些方法可以用来获取元素的常用属性值:

1. 宽和高相关 Height and Width

jQuery操作属性和样式详解     jQuery操作属性和样式详解

outerWidth 可以接受一个 bool 值参数表示是否计算 margin 值。

2. 位置相关 Positioning

jQuery操作属性和样式详解

以上这篇jQuery操作属性和样式详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
javascript 出生日期和身份证判断大全
Nov 13 Javascript
JQuery以JSON方式提交数据到服务端示例代码
May 05 Javascript
JavaScript中读取和保存文件实例
May 08 Javascript
javascript圆盘抽奖程序实现原理和完整代码例子
Jun 03 Javascript
js小数运算出现多位小数如何解决
Oct 08 Javascript
Bootstrap表格和栅格分页实例详解
May 20 Javascript
angularjs ui-router中路由的二级嵌套
Mar 10 Javascript
Angular中$broadcast和$emit的使用方法详解
May 22 Javascript
Kindeditor单独调用单图上传增加预览功能的实例
Jul 31 Javascript
vue2.0学习之axios的封装与vuex介绍
May 28 Javascript
详解element-ui表格中勾选checkbox,高亮当前行
Sep 02 Javascript
vue打开新窗口并实现传参的图文实例
Mar 04 Vue.js
jquery跟随屏幕滚动效果的实现代码
Apr 13 #Javascript
两种方法解决javascript url post 特殊字符转义 + &amp; #
Apr 13 #Javascript
Angular.js与Bootstrap相结合实现手风琴菜单代码
Apr 13 #Javascript
JQuery 两种方法解决刚创建的元素遍历不到的问题
Apr 13 #Javascript
更高效的使用JQuery 这里总结了8个小技巧
Apr 13 #Javascript
深入理解关于javascript中apply()和call()方法的区别
Apr 12 #Javascript
javascript中去除数组重复元素的实现方法【实例】
Apr 12 #Javascript
You might like
PHP使用适合阅读的格式显示文件大小的方法
2015/03/05 PHP
PHP抓取远程图片(含不带后缀的)教程详解
2016/10/21 PHP
js 处理URL实用技巧
2010/11/23 Javascript
漂亮的jquery提示效果(仿腾讯弹出层)
2013/02/05 Javascript
JS小功能(setInterval实现图片效果显示时间)实例代码
2013/11/28 Javascript
JavaScript验证图片类型(扩展名)的函数分享
2014/05/05 Javascript
JavaScript设计模式之单例模式实例
2014/09/24 Javascript
浅析javascript的间隔调用和延时调用
2014/11/12 Javascript
JS实现图片的不间断连续滚动的简单实例
2016/06/03 Javascript
Flask中获取小程序Request数据的两种方法
2017/05/12 Javascript
微信小程序分页加载的实例代码
2017/07/11 Javascript
vue 实现类似淘宝星级评分的示例
2018/03/01 Javascript
Angular6 发送手机验证码按钮倒计时效果实现方法
2019/01/08 Javascript
Vue 幸运大转盘实现思路详解
2019/05/06 Javascript
bootstrap table实现iview固定列的效果实例代码详解
2019/09/30 Javascript
在vue和element-ui的table中实现分页复选功能
2019/12/04 Javascript
element-plus一个vue3.xUI框架(element-ui的3.x 版初体验)
2020/12/02 Vue.js
用Python实现通过哈希算法检测图片重复的教程
2015/04/02 Python
Python中的with...as用法介绍
2015/05/28 Python
Python中关键字global和nonlocal的区别详解
2018/09/03 Python
Flask实现跨域请求的处理方法
2018/09/27 Python
Python内置random模块生成随机数的方法
2019/05/31 Python
解决py2exe打包后,总是多显示一个DOS黑色窗口的问题
2019/06/21 Python
python中取绝对值简单方法总结
2020/07/24 Python
python 元组和列表的区别
2020/12/30 Python
selenium携带cookies模拟登陆CSDN的实现
2021/01/19 Python
PyCharm2020.3.2安装超详细教程
2021/02/08 Python
详解解决jupyter不能使用pytorch的问题
2021/02/18 Python
西班牙香水和化妆品购物网站:Arenal Perfumerías
2019/03/01 全球购物
美国围栏公司:Walpole Outdoors
2019/11/19 全球购物
Super-Pharm波兰:药房和香水在一个地方
2020/08/18 全球购物
军训自我鉴定200字
2014/02/13 职场文书
毕业论文致谢范文
2015/05/14 职场文书
学校教学工作总结2015
2015/05/19 职场文书
nginx location优先级的深入讲解
2021/03/31 Servers
浅谈PostgreSQL表分区的三种方式
2021/06/29 PostgreSQL