在前面的知識中,我們有提到一個text()方法用來獲取文字,其實,在jQuery中,獲取HTML和文字的方法有很多,下面依次演示這些方法。
在開始操作前,我們先在html中新增如下程式碼,後期所有的操作都在此基礎上進行。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<script type="text/javascript" src="jquery-3.2.1.js"></script>
</head>
<body>
<div id="one">北京你好</div>
<div id="two"><span>上海也很好</span>,風景秀麗<a>重慶</a></div>
<input type="text" id="username" value="tom" />
</body>
</html>
html()
在JavaScript中,可以通過innerHTML方法獲取元素包含的具體內容。
$(function(){
console.log(document.getElementById('one').innerHTML);
console.log(document.getElementById("two").innerHTML);
})
從上面的例子中我們可以看到,innerHTML會把節點包含的【文字 和 元素標籤內容】都給抓取出來,在jQuery中,也有一個類似的方法,可以獲取節點包含的內容,那就是html()。
$(function(){
console.log($('#one').html());
console.log($('#two').html());
})
目前看起來,兩個方法是一樣的,但是其實網上有很多地方有提出innerHTML對於像table類的元素標籤不起作用,還會報錯,具體的我沒有研究,下次應該會看一下。
很顯然,html()除了可以獲取節點內容外,還可以設定節點內容。
$(function(){
$('#one').html("天津你也好");
$("#two").html("<p><a href='http://www.chongqing.com'>重慶</a>很好</p>");
})
當我們向html()方法中傳遞引數的時候,這個引數就會成為匹配元素的內容,這個引數可以說是純文字,也可以是html標籤內容。
text()
在JavaScript中,可以通過innerText方法,獲取元素的純文字內容。
$(function(){
console.log(document.getElementById('one').innerText);
console.log(document.getElementById("two").innerText);
})
在jQuery中,也有一個類似的方法,可以獲取純文字,那就是text(),這個方法只對文字起作用,在獲取節點的內容時,會把html標籤刪除,只保留文字內容。
$(function(){
console.log($("#one").text());
console.log($("#two").text());
})
這兩個方法在獲取節點內容的時候,效果幾乎相同,但是需要特別注意的是,在《鋒利的jQuery》一書中,提到innerText在Firefox瀏覽器中並不能執行,但我試驗的時候是沒有報錯,而是正常執行,不知道是不是版本的原因。
自然,text()方法還可以用來設定節點內容。
$(function(){
$("#one").text("百度");
$("#two").text("<a href='http://www.baidu.com'>百度</a>");
})
也就是說,即使在內容裡添加了html標籤,也會被當做純文字解析。
val()
val()類似於JavaScript中的value屬性,可以用來設定和獲取元素的值,無論元素是文字框、下拉列表還是單選框,它都可以返回元素的值,如果元素為多選,則返回一個包含所有選擇的值的陣列。
$(function(){
console.log($("#username").val());
})
$(function(){
$("#username").val('jack');
console.log($("#username").val());
})