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怎么把&amp;字符换成&quot;&amp;amp:&quot;
Oct 19 Javascript
JavaScript 中的replace方法说明
Apr 13 Javascript
根据出生日期自动取得星座的js代码
Jul 20 Javascript
js预载入和JavaScript Image()对象使用介绍
Aug 28 Javascript
JS delegate与live浅析
Dec 21 Javascript
JavaScript新窗口与子窗口传值详解
Feb 11 Javascript
JavaScript中switch语句的用法详解
Jun 03 Javascript
全面解析JavaScript里的循环方法之forEach,for-in,for-of
Apr 20 Javascript
jQuery插件FusionWidgets实现的AngularGauge图效果示例【附demo源码】
Mar 23 jQuery
利用vue.js实现被选中状态的改变方法
Feb 08 Javascript
JavaScript callback回调函数用法实例分析
May 08 Javascript
Vue extend的基本用法(实例详解)
Dec 09 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
PHP静态新闻列表自动生成代码
2007/06/14 PHP
使用php来实现网络服务
2009/09/15 PHP
php实现中文字符截取防乱码方法汇总
2015/04/29 PHP
Symfony2安装的方法(2种方法)
2016/02/04 PHP
Laravel中log无法写入问题的解决
2017/06/17 PHP
JavaScript传递变量: 值传递?引用传递?
2011/02/22 Javascript
基于jquery自定义图片热区效果
2012/07/21 Javascript
javascript动态加载实现方法一
2012/08/22 Javascript
zTree插件之多选下拉菜单实例代码
2013/11/06 Javascript
jQuery Ajax()方法使用指南
2014/11/19 Javascript
Javascript控制input输入时间格式的方法
2015/01/28 Javascript
JavaScript图片轮播代码分享
2015/07/31 Javascript
全面解析Bootstrap表单使用方法(表单样式)
2015/11/24 Javascript
jQuery修改DOM结构_动力节点Java学院整理
2017/07/05 jQuery
vue加载自定义的js文件方法
2018/03/13 Javascript
巧妙运用v-model实现父子组件传值的方法示例
2019/04/07 Javascript
vue中获取滚动table的可视页面宽度调整表头与列对齐(每列宽度不都相同)
2019/08/17 Javascript
JavaScript设计模式之策略模式实现原理详解
2020/05/29 Javascript
vue从后台渲染文章列表以及根据id跳转文章详情详解
2020/12/14 Vue.js
[53:21]2014 DOTA2国际邀请赛中国区预选赛5.21 DT VS LGD-CDEC
2014/05/22 DOTA
python dict remove数组删除(del,pop)
2013/03/24 Python
python中__call__内置函数用法实例
2015/06/04 Python
python 简单备份文件脚本v1.0的实例
2017/11/06 Python
pandas数据分组和聚合操作方法
2018/04/11 Python
Python实现的从右到左字符串替换方法示例
2018/07/06 Python
Python-ElasticSearch搜索查询的讲解
2019/02/25 Python
用Python配平化学方程式的方法
2019/07/20 Python
Python图像处理库PIL中图像格式转换的实现
2020/02/26 Python
Python json读写方式和字典相互转化
2020/04/18 Python
python自动打开浏览器下载zip并提取内容写入excel
2021/01/04 Python
独特的礼品和创新的科技产品:The Grommet
2018/02/24 全球购物
婚礼主持结束词
2014/03/13 职场文书
单位绩效考核方案
2014/05/11 职场文书
2014个人年度工作总结范文
2014/12/24 职场文书
医院病假条怎么写
2015/08/17 职场文书
CSS 制作波浪效果的思路
2021/05/18 HTML / CSS