属性操作,指的是使用jQuery来操作一个元素的HTML属性。注意,这里说的属性操作,指的是HTML属性,而不是CSS属性。像下面有一个input元素,指的就是操作它的id、type、value等,其他元素也类似。

<input id="btn" type="button" value="提交"/>

在jQuery中,对于HTML属性的操作有以下4个方面。

  • (1)获取属性
  • (2)设置属性
  • (3)删除属性
  • (4)prop()方法

一、获取属性

在jQuery中,我们可以使用attr()方法来获取元素的某一个HTML属性值。

语法:

$().attr("属性名")

说明:

获取HTML元素的属性值,一般都是通过属性名,来找到该属性对应的值。

举例:

<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title></title> <script src="js/jquery-1.12.4.min.js"></script> <script> $(function () { $("#btn_src").click(function () { alert($("img").attr("src")); }); $("#btn_alt").click(function () { alert($("img").attr("alt")); }); }) </script> </head> <body> <img src="img/jquery.png" alt="jquery标志"/><br /> <input id="btn_src" type="button" value="获取src属性值"/> <input id="btn_alt" type="button" value="获取alt属性值"/> </body> </html>

浏览器预览效果如图所示。

分析:

在这个例子中,我们使用attr()方法来获取img元素的src和alt两个属性的取值。

二、设置属性

在jQuery中,设置元素的某一个HTML属性的值,我们用的也是attr()方法。

语法:

//设置一个属性 $().attr("属性", "取值") //设置多个属性 $().attr({"属性1": "取值1", "属性2":"取值2", …, "属性n":"取值n"})

说明:

对于设置属性,jQuery有两种语法形式:一种是“设置一个属性”;另外一种是“设置多个属性”。

对于设置多个属性的语法,我们传入attr()方法的是一个包含键值对的对象。使用这种语法可以轻松地扩展,以便一次性地修改多个属性。

举例:设置一个属性

<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title></title> <script src="js/jquery-1.12.4.min.js"></script> <script> $(function () { var flag = true; $("#btn").click(function(){ if(flag){ $("#pic").attr("src", "img/2.png"); flag = false; }else{ $("#pic").attr("src", "img/1.png"); flag = true; } }); }) </script> </head> <body> <input id="btn" type="button" value="修改" /><br/> <img id="pic" src="img/1.png" /> </body> </html>

默认情况下,预览效果如图所示。

当我们点击【修改】按钮后,浏览器预览效果如图所示。

分析:

这里使用一个布尔变量flag来标识两种状态,使两张图片可以来回切换。

举例:设置多个属性

<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title></title> <script src="js/jquery-1.12.4.min.js"></script> <script> $(function () { var flag = true; $("#btn").click(function(){ if(flag){ $("#pic").attr({"src":"img/2.png", "alt":"日向雏田", "title":"日向雏田"}); flag = false; }else{ $("#pic").attr({"src":"img/1.png", "alt":"旋涡香燐", "title":"旋涡香燐"}); flag = true; } }); }) </script> </head> <body> <input id="btn" type="button" value="修改" /><br/> <img id="pic" src="img/1.png" /> </body> </html>

默认情况下,预览效果如图所示。

当我们点击【修改】按钮后,浏览器预览效果如图所示。

三、删除属性

在jQuery中,我们可以使用removeAttr()方法来删除元素的某个属性。

语法:

$().removeAttr("属性名")

举例:

<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title></title> <style> .content{color:red;font-weight:bold;} </style> <script src="js/jquery-1.12.4.min.js"></script> <script> $(function () { $("p").click(function(){ $(this).removeAttr("class"); }); }) </script> </head> <body> <p class="content">绿叶学习网</p> </body> </html>

浏览器预览效果如图所示。

分析:

这里我们为p元素添加一个点击事件。在点击事件中,我们使用removeAttr()方法来删除class属性,删除了类名之后该元素就没有那个类名对应的样式了。

removeAttr()方法更多情况下是结合class属性来“整体”控制元素的样式属性的,我们再来看一个例子。

举例:

<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title></title> <style> .content{color:red;font-weight:bold;} </style> <script src="js/jquery-1.12.4.min.js"></script> <script> $(function () { $("#btn_add").click(function(){ $("p").attr("class", "content"); }); $("#btn_remove").click(function () { $("p").removeAttr("class"); }); }) </script> </head> <body> <p>绿叶学习网</p> <input id="btn_add" type="button" value="添加样式" /> <input id="btn_remove" type="button" value="删除样式" /> </body> </html>

浏览器预览效果如图所示。

分析:

想要为一个元素添加一个class(即使不存在class属性),可以使用:

$().attr("class", "类名");

想要为一个元素删除一个class,可以使用:

$().removeAttr("类名");

四、prop()方法

prop()方法跟attr()方法相似,都是用来获取或设置元素的HTML属性的。不过两者也有着本质上的区别。

jQuery官方建议:具有true和false这两种取值的属性,如checked、selected或disabled等建议使用prop()来操作,而其他的属性都建议使用attr()来操作。

举例:

<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title></title> <script src="js/jquery-1.12.4.min.js"></script> <script> $(function () { $('input[type="radio"]').change(function(){ var bool = $(this).attr("checked"); if(bool){ $("p").text("你选择的是:" + $(this).val()); } }) }) </script> </head> <body> <div> <label><input type="radio" name="fruit" value="苹果" />苹果</label> <label><input type="radio" name="fruit" value="香蕉" />香蕉</label> <label><input type="radio" name="fruit" value="西瓜" />西瓜</label> </div> <p></p> </body> </html>

浏览器预览效果如图所示。

分析:

$().change(function(){ …… })

上面表示的是jQuery中的change事件,跟JavaScript的onchange事件是一样的,我们在后面“6.5 表单事件”这一节中会详细介绍。

在这个例子中,我们其实是想通过$(this).attr(“checked”)判断单选框是否被选中,如果选中的话,就获取该单选框的value值。可是运行代码后发现:例子完全没有效果!这是为什么呢?

实际上,对于表单元素的checked、selected、disabled这些属性,我们使用attr()方法是没法获取的,而必须使用prop()方法来获取。我们把attr()替换成prop()就有效果了。

实际上,prop()方法的出现就是为了弥补attr()方法在表单属性操作中的不足。记住一句话就行了:如果某个属性没法使用attr()获取或设置,改换prop()就可以搞定