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 相关文章推荐
MooTools 1.2介绍
Sep 14 Javascript
jQuery使用一个按钮控制图片的伸缩实现思路
Apr 19 Javascript
PhantomJS快速入门教程(服务器端的 JavaScript API 的 WebKit)
Aug 06 Javascript
详细谈谈javascript的对象
Jul 31 Javascript
详解获取jq ul第一个li定位的四种解决方案
Nov 23 Javascript
详解vue-cli + webpack 多页面实例应用
Apr 25 Javascript
vue实现动态数据绑定
Apr 28 Javascript
基于node简单实现RSA加解密的方法步骤
Mar 21 Javascript
浅谈Vue CLI 3结合Lerna进行UI框架设计
Apr 14 Javascript
js实现整体缩放页面适配移动端
Mar 31 Javascript
微信小程序国际化探索实现(附源码地址)
May 20 Javascript
vue监听浏览器原生返回按钮,进行路由转跳操作
Sep 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
【COS正片】蕾姆睡衣cos,纯洁可爱被治愈了 cn名濑弥七
2020/03/02 日漫
用PHP读取超大文件的实例代码
2012/04/01 PHP
浅谈PHP表单提交(POST&amp;GET&amp;URL编/解码)
2017/04/03 PHP
解决安装WampServer时提示缺少msvcr110.dll文件的问题
2017/07/09 PHP
php策略模式简单示例分析【区别于工厂模式】
2019/09/25 PHP
如何简单地用YUI做JavaScript动画
2007/03/10 Javascript
javascript date格式化示例
2013/09/25 Javascript
jquery带翻页动画的电子杂志代码分享
2015/08/21 Javascript
继续学习javascript闭包
2015/12/03 Javascript
JavaScript实现图像模糊化的方法实例
2017/01/15 Javascript
JS中的数组转变成JSON格式字符串的方法
2017/05/09 Javascript
jquery网页加载进度条的实现
2017/06/01 jQuery
javascript自定义事件功能与用法实例分析
2017/11/08 Javascript
浅谈Vue2.0父子组件间事件派发机制
2018/01/08 Javascript
解决layui弹框失效的问题
2019/09/09 Javascript
vue quill editor 使用富文本添加上传音频功能
2020/01/14 Javascript
[46:43]DOTA2上海特级锦标赛主赛事日 - 1 胜者组第一轮#2LGD VS MVP.Phx第二局
2016/03/02 DOTA
[06:25]第二届DOTA2亚洲邀请赛主赛事第二天比赛集锦.mp4
2017/04/03 DOTA
把MySQL表结构映射为Python中的对象的教程
2015/04/07 Python
Python中的Numeric包和Numarray包使用教程
2015/04/13 Python
Python同步遍历多个列表的示例
2019/02/19 Python
Python中字典与恒等运算符的用法分析
2019/08/22 Python
Python任务调度利器之APScheduler详解
2020/04/02 Python
Django中Q查询及Q()对象 F查询及F()对象用法
2020/07/09 Python
Python绘图之二维图与三维图详解
2020/08/04 Python
Python Web项目Cherrypy使用方法镜像
2020/11/05 Python
HTML5 新事件 小结
2009/07/16 HTML / CSS
有关HTML5 Video对象的ontimeupdate事件(Chrome上无效)的问题
2013/07/19 HTML / CSS
英国复古服装和球衣购买网站:3Retro Football
2018/07/09 全球购物
解释下列WebService名词:WSDL、SOAP、UDDI
2012/06/22 面试题
护理专业自荐信范文
2014/02/26 职场文书
我读书我快乐演讲稿
2014/05/07 职场文书
领导干部廉政自律承诺书
2014/05/26 职场文书
五星级酒店前台接待岗位职责
2015/04/02 职场文书
医院消毒隔离制度
2015/08/05 职场文书
2016银行招聘自荐信
2016/01/28 职场文书