在前面的知識中,我們有提到一個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()); })


