jQuery操作属性

  • 操作元素属性
  • 操作样式类
  • 操作样式
  • 获取或设置元素高度和宽度
  • 操作内容
  • 操作HTML代码
  • 操作text文本
  • 操作值
  • 查找和筛选元素
  • 过滤
  • 查找
  • 链式操作


操作元素属性

属性是每个页面元素的重要内容,HTML标签可以有一到若干个属性。id即是元素的常用属性之一。例如:

<input type="text" name="firstname" value="Dennis" id="first" />

我们可以使用javascript中的getAttribute和setAttribute来操作元素的"元素属性"。
在jQuery中给你提供了attr()包装集函数, 能够同时操作包装集中所有元素的属性

获取元素属性值:$(selector).attr('属性名') 设置元素属性值:$(selector).attr({'属性名':'属性值'}) 传多个:$('img').attr({'src':'./ydggg.jpg','alt':'我是大锅'})

$(selector).attr('属性名','属性值')

jquery操作元素 jquery操作属性_jquery操作元素

操作样式类

样式类是CSS中的一个概念,它用于设定页面上对应于“class”属性的元素的样式显示。rose样式类就是一个最简单的样式类。

.rose {
	background-color: #FFE4E1;
}

添加样式类:$(selector).addClass('样式类名') 删除样式类:$(selector).removeClass('样式类名')

判断元素是否有给定样式类:$(selector).hasClass('样式类名')

交替添加(删除)样式类:$(selector).toggleClass('样式类名')

jquery操作元素 jquery操作属性_链式操作_02


使用addClass(class)和removeClass(class)函数可以方便地对页面元素应用设定好的样式类。但是,这种需求改变了页面元素的class属性。而且其局限性在于必须事先定义好将要使用的CSS样式类,这样一来其灵活性就不是很好。

jQuery中直接操作CSS样式。jQuery不但可以得到指定元素的某个CSS属性的值,还可以随意地对指定元素进行CSS样式的设定,并且jQuery还提供了操作高度、宽度以及偏移的函数。

操作样式

获取样式属性值:$(selector).css('样式属性名') 设置样式属性值:$(selector).css({'属性名':'属性值'})

jquery操作元素 jquery操作属性_链式操作_03

获取或设置元素高度和宽度

我们希望获取测试图层的宽度, 使用attr方法获取"元素特性"为undifined, 因为并没有为div添加width. 而使用css()方法虽然可以获取到style属性的值, 但是在不同浏览器里返回的结果不同, IE6下返回auto, 而FF下虽然返回了正确的数值但是后面带有"px".

jquery操作元素 jquery操作属性_链式操作_04

  1. 宽度
$(selector).width():获取宽度
$(selector).width(value):设置宽度
  1. 高度
$(selector).height():获取高度
$(selector).height(value):设置高度

操作内容

所谓内容,就是直接跟终端用户打交道的部分,如测试页面上的两段文字本身。接下来将介绍使用jQuery来操作元素的内容,包括操作HTML代码、操作文本以及操作值三个部分。

操作HTML代码

HTML代码就是之前经常见到的被“<”和“>”包含起来的标签元素。jQuery中的函数html()和html(val)分别用来获取以及设置指定页面元素的HTML代码。这里的HTML代码是一种泛指,它不能处理XML文档,但是对XHTML的各种标签支持良好。

jquery操作元素 jquery操作属性_javascript_05


jquery操作元素 jquery操作属性_jquery操作元素_06

操作text文本

除了可以直接操作HTML代码之外,jQuery还提供了一种可以直接操作指定元素标签内文本内容的函数,即text()以及text(val)函数。

jquery操作元素 jquery操作属性_操作元素_07

jquery操作元素 jquery操作属性_jquery_08

操作值

val()函数用来获得第一个匹配元素的当前值。在jQuery 1.2中对该元素作了增强,可以用来操作select等元素。如果多选,将返回一个数组,其包含所选的值。

jquery操作元素 jquery操作属性_javascript_09

jquery操作元素 jquery操作属性_操作元素_10

操作元素的固有属性:$(selector).prop('属性名') 设置元素的固有属性值:$(selector).prop('属性名','属性值')

data() 方法向被选元素附加数据,或者从被选元素获取数据。

注释:这是底层级的方法;使用 .data() 更加方便。
向元素附加数据,然后取回该数据:

<html>
<head>
<script type="text/javascript" src="/jquery/jquery.js"></script>
<script type="text/javascript">
$(document).ready(function(){
  $("#btn1").click(function(){
    $("div").data("greeting", "Hello World");
  });
  $("#btn2").click(function(){
    alert($("div").data("greeting"));
  });
});
</script>
</head>
<body>
<button id="btn1">把数据添加到 div 元素</button><br />
<button id="btn2">获取已添加到 div 元素的数据</button>
<div></div>
</body>
</html>

jquery操作元素 jquery操作属性_jquery操作元素_11

查找和筛选元素

过滤

jquery操作元素 jquery操作属性_操作元素_12

查找

jquery操作元素 jquery操作属性_jquery操作元素_13


jquery操作元素 jquery操作属性_javascript_14

链式操作

“链式操作”是jQuery语法中最有特色的一个功能之一。简单地说,“链式操作”就是把之前需要分很多行书写的代码使用“.”连接成一行进行书写。这在很大程度上能够节省网站需要加载的代码量,同时也使对元素的各种操作更加集中。
其缺点就是由于链式操作所必需的连贯性,可能导致代码的可读性有所降低。

<table border="1" id="tab">
	<tbody id="tb"></tbody>
</table>
<script type="text/javascript">
alert($("table").first-child().attr("id"));
$(“#tb”).append(“<tr><td>10</td><td>tom</td></tr>”);//正确
$(“#tb”).append(“<tr><td>10</td>”).append(“<td>tom</td>”).append(“</tr>”);//错误
</script>

Append方法是插入到tbody里面,而链式操作返回来的还是tbody对象,所以在错误代码中第二个append实际上是直接插入到tbody中,而不是插入到tr中。
错误代码这种用append方法最后生成的代码结果如下:

<tbody>
   <tr>
      <td>1001</td>
   </tr>
   <td>tom</td>
</tobdy>

jQuery的链接操作如果使用得当,可以极大的提高编写jQuery代码的效率。
$("tr#first")选择器用于得到表格的第一行,之后使用next()函数取得表格的第二行,然后调用addClass()函数为表格的第二行应用样式。这里如果在使用了next()函数之后仍然想对之前的页面元素,即表格的第一行进行操作该怎么办呢?jQuery中提供了一个专门的函数end()来处理这种情况。end()函数将使操作回滚到最近的一个“破坏性”操作之前。也就是说,将匹配的元素列表变为前一次的状态。

jquery操作元素 jquery操作属性_javascript_15