DOM与jquery的区别(二:元素属性与CSS样式表)

元素属性:
DOM:
即便每个节点对象都有attribute方法,然而只有元素节点才能有特性。元素节点的attributes属性其实是NameNodeMap(NamedNodeMap 接口),它提供了一些用于访问和处理内容的方法,包括:

  • getNamedItem(name) ———— 返回 nodeName 属性值等于name的节点;(要获取该节点属性的值可以用” .value”)
  • removeNamedItem(name) ———— 删除nodeNamedItem 属性值等于 name 的节点;
  • setNamedItme(node) ———— 将 node 添加到列表中,按其 nodeName属性进行索引;
  • item(pos) ———— 返回在位置 pos 的节点;
    因为Attr节点也有一个完全等同于nodeValue属性的value属性,并且有name属性和nodeName属性保持同步,因此我们可以随意使用这些属性来修改节点特性,对此,DOM又定义了三个元素方法帮助访问特性:
  • getAttribute(name) ———— 等同于 attributes.getNamedItem(name).value;
  • setAttribute(name,newValue) ————等同于 attributes.getNamedItem(name).value=newValue;(还可以用于添加新的属性与属性值,不足是两个参数必须写完,比如disabled就必须写 setAttribute(“disabled“,“disabled”));
  • removeAttribute(name) ———— 等同于attributes.removeNamedItem(name) 。
    通过这些方法就可以直接处理特性值,接下来我们在来看看通过jquery来控制节点特性吧:
    jquery:
    就属性而言jquery可以通过属性选择器来定位到元素,通过attr( )方法设置指定节点的属性值;
    ("[attribute]"), ( " [ a t t r i b u t e ] " ) , (” [attribute=’value’] “),在之前也可以指定所在的元素,例如: (input[name=newsletter])jqueryattr便.attr(name|pro,val|fn)name/pro ( “ i n p u t [ n a m e = ′ n e w s l e t t e r ′ ] ” ) ; 修 改 节 点 属 性 j q u e r y 的 a t t r ( ) 更 为 便 捷 , 直 接 通 过 : 所 在 节 点 . a t t r ( n a m e | p r o , v a l | f n ) 它 不 仅 可 以 直 接 设 置 属 性 名 为 n a m e 或 者 作 为 属 性 的 “ 名 / 值 对 ” 对 象 p r o 的 属 性 值 , 还 可 以 返 回 一 个 函 数 的 返 回 值 作 为 属 性 , 例 如 : ("img").attr("title", function() { return this.src }),把src属性的值设置为title属性的值。另外如果设置多个属性圆弧中间要使用花括号并用逗号分隔,例如: $(“img”).attr({ src: “test.jpg”, alt: “Test Image” });
    值得注意的是在jQuery 1.6中,当属性没有被设置时候,.attr()方法将返回undefined。若要检索和更改DOM属性,比如元素的checked, selected, 或 disabled状态,使用prop()方法,使用与attr()方法完全一致。

单从元素属性来讲,DOM与jquery的获取与设置属性值只是使用的方法不同,但在元素属性名称及值的获取略有不同,在DOM在class属性是className而jquery就是class,DOM通过getNamedItem(name) .value而jquery要通过val( )方法获取值,例如: (input[value=666]).val()CSSCSSDOMDOMIE4.0StyleCSSCSSStyle线backgroundcolorstylestyle.backgroundColorcssdivcss1pxsolidblackvaroDiv=document.getElementById(div1);oDiv.style.border=1pxsolidblack;jssetAttributeclassName,newNameclass;stylehover使onmouseoveronmouseupjqueryjqueryjquerycss()使attr()div ( “ i n p u t [ v a l u e = ′ 666 ′ ] ” ) . v a l ( ) ; 接 下 来 我 们 在 来 看 看 对 C S S 样 式 表 的 控 制 吧 : C S S 样 式 表 : D O M : 在 D O M 中 , 采 用 了 I E 4.0 的 方 法 对 每 个 元 素 引 入 了 S t y l e 对 象 , 用 这 个 对 象 来 管 理 元 素 的 C S S 样 式 , 对 于 每 个 C S S 样 式 , S t y l e 对 象 都 包 含 一 个 相 应 的 属 性 , 但 是 在 写 法 上 略 有 不 同 , 对 于 两 个 词 的 样 式 采 用 了 驼 峰 命 名 法 , 去 掉 了 中 短 线 , 例 如 : b a c k g r o u n d − c o l o r 对 应 s t y l e 对 象 的 属 性 是 : s t y l e . b a c k g r o u n d C o l o r , 这 样 来 我 们 就 可 以 改 变 c s s 样 式 了 , 例 如 更 改 一 个 d i v 的 c s s 边 框 属 性 更 改 为 “ 1 p x s o l i d b l a c k ” : v a r o D i v = d o c u m e n t . g e t E l e m e n t B y I d ( “ d i v 1 ” ) ; o D i v . s t y l e . b o r d e r = “ 1 p x s o l i d b l a c k ” ; 这 样 的 缺 陷 是 我 们 得 一 个 一 个 的 去 设 置 样 式 , 当 然 我 们 也 可 以 在 j s 外 面 写 好 样 式 表 , 在 通 过 s e t A t t r i b u t e ( ” c l a s s N a m e ” , ” n e w N a m e ” ) 改 变 当 前 样 式 的 c l a s s ; 通 过 s t y l e 的 属 性 我 们 还 可 以 去 设 置 : h o v e r 伪 类 来 实 现 移 入 样 式 的 效 果 ( 这 得 使 用 o n m o u s e o v e r 和 o n m o u s e u p 事 件 的 配 合 ) ; j q u e r y : 在 j q u e r y 中 操 作 样 式 表 就 变 得 极 为 简 单 了 , j q u e r y 提 供 了 c s s ( ) 方 法 操 作 样 式 , 使 用 方 法 和 a t t r ( ) 十 分 类 似 , 例 如 上 例 修 改 d i v : (“#div1”).css(“border”,”1px solid black”);这个方法就可以同时设置样式了,同样的间要使用花括号并用逗号分隔。
与DOM不同的是css样式的名称就和css完全一致了而不是DOM的驼峰命名法。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值