jquery中text()、html()、val()三者用途分明:text()获取/设置纯文本(忽略html和表单输入值),html()获取/设置含标签的html内容(有xss风险),val()专用于表单元素的value值读写。

要在网页中动态读取或修改某个div里的文字、一段HTML结构,或者一个输入框当前填的内容,必须用对jQuery的内容获取方法——用错text()、html()、val()中的任何一个,都可能拿不到值、改不生效,甚至把标签当纯文本显示出来。
获取或设置纯文本内容
使用 .text() 方法可提取或写入元素内所有可见文本,自动忽略HTML标签,也不读取表单元素的用户输入值。
第一步:选中目标元素,调用 .text() 不带参数,即可获取其纯文本内容:$('#title').text() 返回「欢迎来到首页」;
第二步:传入字符串参数,即可覆盖原有文本:$('#title').text('新标题已生效');
注意:如果目标元素是 <input type="text"> 或 <textarea></textarea>,.text() 永远返回空字符串或初始 placeholder 文本,【它完全不读取用户实际输入的 value】。
获取或设置含标签的HTML内容
当你需要保留或注入完整HTML结构(比如插入一个带样式的段落、动态生成列表项),必须用 .html()。
执行 $('#content').html() 会返回包含所有子标签的字符串,例如 "<p>第一段</p>
<ul><li>项目1</li></ul>";
执行 $('#content').html('<h2>副标题</h2>
<p>正文开始</p>') 会直接替换整个内部HTML;
危险操作:若传入的字符串来自用户输入且未过滤,.html() 会直接执行其中的 script 标签——这会造成XSS漏洞,生产环境务必做转义或使用 .text() 替代。
专门读写表单元素的用户输入值
只有 .val() 能准确获取或设置 <input>、<select></select>、<textarea></textarea> 的实时 value 值,这是它和 .text() 的根本区别。
jQuery 1.12.4是jQuery 1.x系列的最后一个正式稳定版本,由jQuery团队于2016年发布。该版本主要面向需要兼容旧版浏览器环境的网站和Web应用,尤其适用于仍需支持Internet Explorer 6、Internet Explorer 7、Internet Explorer 8等老旧浏览器的项目。
方法一:获取当前输入框内容——$('#username').val();
方法二:设置下拉框选中第2项(索引从0开始)——$('#country').val('CN'),前提是 option 的 value 属性值为 "CN";
方法三:清空多行文本域——$('#message').val('');
特别提醒:.val() 对非表单元素无效,对 <div> 或 <code><p></p> 调用会返回 undefined,不要混用。
一次性提取整块区域的全部可见文本(含表单输入)
当你要实现搜索过滤功能,而目标区域里既有普通文字又有输入框,仅靠 .text() 会漏掉用户刚打的字——这时需手动递归提取。
① 定义一个通用函数:
function getText(elem) { let text = ''; if (elem.childNodes && elem.childNodes.length > 0) { for (let node of elem.childNodes) { text += getText(node); } } else { text += 'value' in elem ? elem.value : (elem.textContent || ''); } return text.trim(); }
② 在jQuery中调用它:const fullText = getText($('#search-container')[0]); ——这里必须传原生 DOM 元素,不能传 jQuery 对象;
③ 将结果用于匹配:if (fullText.includes(keyword)) { $(elem).show(); };
这个函数会自动识别 <input>、<textarea></textarea>、<select></select> 并取其 value,其余节点统一取 textContent,确保搜索不遗漏任何用户可见内容。










