jQuery:val()、text()、html()的用法及区别
一、.html(),.text()和.val()的基本用法
1.html():获取集合中第一个匹配元素的HTML内容。
这个函数不能用于XML文档。但可以用于XHTML文档
.html( htmlString ):设置每一个匹配元素的html内容。这个函数不能用于XML文档。但可以用于XHTML文档
.html( function(index, oldhtml)):return设置HTML内容的一个函数。index可选。接收选择器的下标 位置;oldhtml可选。接收选择器的当前内容。
所以 html() 只输出标签内的文本内容,它和 js 中的 innerHtml() 方法功能一样。
2.text():获取匹配元素集合中每个元素的合并文本内容,包括他们的后代。
这个方法对HTML和XML文档都有效。
.text( textString ):设置匹配元素内容的文本
.text( function(index, oldtext)):return 设置文本内容的一个函数。index可选。接收选择器的下标 位置;oldtext可选。接收选择器的当前内容。
其实 text() 只输出标签内的文本内容,它和 js 中的 innerText() 方法功能一样。
3.val():获取匹配的元素集合中的第一个元素的当前值
.val(value):设置匹配的元素集合中的每个元素的值
.val( function(index, oldvalue) ) return 设置文本内容的一个函数。index可选。接收选择器的 下标 位置;oldvalue可选。接收选择器的当前内容。
实际上 val() 应该是针对标签的 value 属性的
注意:
.html():方法内部使用的是DOM的innerHTML属性来处理的,所以在设置与获取上需要注意的一个最重要的问题,这个操作是针对整个HTML内容(不仅仅是文本内容,元素标签也包含在里面)。
.text():结果返回一个字符串,包含所有匹配元素的合并文本。
.val():通过.val()处理select元素,当没有选择项被选中,他返回null。.val()方法多用来设置表单的字段的值。如果select元素有multiple(多选)属性,并且至少一个选择项被选中,.val()方法返回一个数组。这个数组包含每个选中的选择项的值。
二、.html(),.text()和.val()的区别
(1).html(),.text(),.val()三种方法都是用来读取选定元素的内容;
(2).html()是用来读取元素的html内容(包括html标签);
(3).text()用来读取元素的纯文本内容,包括其后代元素;
(4).val()是用来读取表单元素的"value"值;
(5).html()和.text()方法不能使用在表单元素上,而.val()只能使用在表单元素上;
(6).html()方法使用在元素集合上时,只读取第一个元素;.val()方法和.html()相同,如果其应用在元素集合上时,只能读取第一个表单元素的"value"值,但是.text()不一样,如果.text()应用在多个元素上时,将会读取所有选中元素的文本内容;
三、.html(),.text()和.val()的共同点
.html(htmlString),.text(textString)和.val(value)三种方法都是用来替换选中元素的内容,如果三个方法同时运用在多个元素上时,那么将会替换所有选中元素的内容;
.html(),.text(),.val()都可以使用回调函数的返回值来动态的改变多个元素的内容;
四、实例
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<script src="./js/jquery-1.12.4.js"></script>
<title>Document</title>
</head>
<body>
<div id="div1">div有文本内容</div>
<div id="div2">
div2内的文本
<span>span内有文本内容</span>
</div>
<input type="text" id="input1" value="这是一个input标签">
<input type="text" name="" id="input2" placeholder="能成功获取">
<button id="button1" value="这是一个button标签"></button>
<script>
console.log($("#div1").html());
console.log($("#div2").html());
console.log($("#div2 span").html());
console.log($("#input1").html());
console.log($("#input2").html());
console.log($("#button1").html());
console.log($("#div1").text());
console.log($("#div2").text());
console.log($("#div2 span").text()) ;
console.log($("#input1").text());
console.log($("#input2").text());
console.log($("#button1").text());
console.log($("#div1").val());
console.log($("#div2").val());
console.log($("#div2 span").val());
console.log($("#input1").val());
console.log($("#input2").val());
console.log($("#button1").val());
</script>
</body>
</html>