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 相关文章推荐
Code:findPosX 和 findPosY
Dec 20 Javascript
浅析jQuery中常用的元素查找方法总结
Jul 04 Javascript
js实现同一个页面多个渐变效果的方法
Apr 10 Javascript
jQuery时间轴插件使用详解
Jul 16 Javascript
程序员必知35个jQuery 代码片段
Nov 05 Javascript
jQuery多级联动下拉插件chained用法示例
Aug 20 Javascript
js实现手机拍照上传功能
Jan 17 Javascript
js中DOM事件绑定分析
Mar 18 Javascript
vue实现后台管理权限系统及顶栏三级菜单显示功能
Jun 19 Javascript
在 Vue 中使用 JSX 及使用它的原因浅析
Feb 10 Javascript
Node 模块原理与用法详解
May 13 Javascript
Vue如何清空对象
Mar 03 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
漫威DC御用漫画家去世 他的表情包曾走红网络
2020/04/09 欧美动漫
WINDOWS 2000下使用ISAPI方式安装PHP
2006/09/05 PHP
PHP 和 XML: 使用expat函数(三)
2006/10/09 PHP
在命令行下运行PHP脚本[带参数]的方法
2010/01/22 PHP
php判断是否为json格式的方法
2014/03/04 PHP
ExtJs 表单提交登陆实现代码
2010/08/19 Javascript
js将long日期格式转换为标准日期格式实现思路
2013/04/07 Javascript
枚举的实现求得1-1000所有出现1的数字并计算出现1的个数
2013/09/10 Javascript
jquery 实现返回顶部功能
2014/11/17 Javascript
angularjs实现多张图片上传并预览功能
2017/02/24 Javascript
详谈jQuery中使用attr(), prop(), val()获取value的异同
2017/04/25 jQuery
通过源码分析Vue的双向数据绑定详解
2017/09/24 Javascript
详解如何使用babel进行es6文件的编译
2018/05/29 Javascript
json字符串传到前台input的方法
2018/08/06 Javascript
Layui给switch添加响应事件的例子
2019/09/03 Javascript
LayUI switch 开关监听 获取属性值、更改状态的方法
2019/09/21 Javascript
[00:19]CN DOTA NEVER DIE!VG夺冠rOtK接受采访
2019/12/23 DOTA
[47:03]完美世界DOTA2联赛PWL S3 access vs LBZS 第一场 12.20
2020/12/23 DOTA
跟老齐学Python之编写类之四再论继承
2014/10/11 Python
用Python和WordCloud绘制词云的实现方法(内附让字体清晰的秘笈)
2019/01/08 Python
python绘制多个子图的实例
2019/07/07 Python
利用Python实现斐波那契数列的方法实例
2020/07/26 Python
Python+OpenCV图像处理——打印图片属性、设置存储路径、调用摄像头
2020/10/22 Python
利用CSS3 动画 绘画 圆形动态时钟
2018/03/20 HTML / CSS
css3新单位vw、vh的使用教程
2018/03/23 HTML / CSS
联想德国官网:Lenovo Germany
2018/07/04 全球购物
意大利在线药房:Saninforma
2021/02/11 全球购物
网游商务专员求职信
2013/10/15 职场文书
运动会广播稿200字
2014/01/15 职场文书
企业总经理岗位职责
2014/02/13 职场文书
《月球之谜》教学反思
2014/04/10 职场文书
充分就业社区汇报材料
2014/05/07 职场文书
国庆促销活动总结
2014/08/29 职场文书
教代会闭幕词
2015/01/28 职场文书
通讯稿范文
2015/07/22 职场文书
初中生物教学随笔
2015/08/15 职场文书