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 相关文章推荐
js猜数字小游戏的简单实现代码
Jul 02 Javascript
JavaScript中的DSL元编程介绍
Mar 15 Javascript
Javascript常用小技巧汇总
Jun 24 Javascript
学习javascript面向对象 理解javascript原型和原型链
Jan 04 Javascript
JavaScript中三种常见的排序方法
Feb 24 Javascript
js实现上下左右弹框划出效果
Mar 08 Javascript
select获取下拉框的值 下拉框默认选中方法
Feb 28 Javascript
详解vue-cli 构建项目 vue-cli请求后台接口 vue-cli使用axios、sass、swiper
May 28 Javascript
微信小程序获取音频时长与实时获取播放进度问题
Aug 28 Javascript
node express使用HTML模板的方法示例
Aug 22 Javascript
6种JavaScript继承方式及优缺点(小结)
Feb 06 Javascript
vue-cli3单页构建大型项目方案
Apr 07 Javascript
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
如何阻止网站被恶意反向代理访问(防网站镜像)
2014/03/18 PHP
php中的静态变量的基本用法
2014/03/20 PHP
一段非常简单的让图片自动切换js代码
2006/11/10 Javascript
js+FSO遍历文件夹下文件并显示
2007/03/07 Javascript
js可突破windows弹退效果代码
2008/08/09 Javascript
jQuery 联动日历实现代码
2012/05/31 Javascript
javascript简单事件处理和with用法介绍
2013/09/16 Javascript
jQuery获取动态生成的元素示例
2014/06/15 Javascript
原生js实现图片层叠轮播切换效果
2016/02/02 Javascript
深入理解jquery跨域请求方法
2016/05/18 Javascript
在javascript中,null>=0 为真,null==0却为假,null的值详解
2017/02/22 Javascript
解决Node.js使用MySQL出现connect ECONNREFUSED 127.0.0.1:3306的问题
2017/03/09 Javascript
jquery 手势密码插件
2017/03/17 Javascript
Node.js 利用cheerio制作简单的网页爬虫示例
2018/03/01 Javascript
使用FormData实现上传多个文件
2018/12/04 Javascript
layui自定义工具栏的方法
2019/09/19 Javascript
[41:12]Liquid vs Secret 2019国际邀请赛淘汰赛 败者组 BO3 第一场 8.24
2019/09/10 DOTA
详解Python中的日志模块logging
2015/06/19 Python
Python Socket编程详细介绍
2017/03/23 Python
Python实现判断字符串中包含某个字符的判断函数示例
2018/01/08 Python
详解Python中的正则表达式
2018/07/08 Python
python绘制无向图度分布曲线示例
2019/11/22 Python
Django 自定义404 500等错误页面的实现
2020/03/08 Python
美国领先的户外服装与装备用品店:Moosejaw
2016/08/25 全球购物
小学教师管理制度
2014/01/18 职场文书
幼儿园小班评语大全
2014/04/17 职场文书
在职党员进社区活动总结
2014/07/05 职场文书
创优争先心得体会
2014/09/11 职场文书
合作协议书范本
2014/10/25 职场文书
综合素质自我评价评语
2015/03/06 职场文书
自我检讨书怎么写
2015/05/07 职场文书
焦点访谈观后感
2015/06/11 职场文书
军训通讯稿范文
2015/07/18 职场文书
社交电商模式的兴起:这些新的商机千万别错过
2019/07/26 职场文书
数据库连接池
2021/04/06 MySQL
使用scrapy实现增量式爬取方式
2022/06/21 Python