首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用jQuery选择文本节点?

如何使用jQuery选择文本节点?

提问于 2017-12-26 08:13:50
回答 2关注 0查看 627

我想获得一个元素的所有后代文本节点,作为一个jQuery集合。什么是最好的方法来做到这一点?

回答 2

Dust

发布于 2017-12-26 08:26:15

一个很好的解决方案

代码语言:txt
AI代码解释
复制
$(elem)
代码语言:txt
AI代码解释
复制
  .contents()
代码语言:txt
AI代码解释
复制
  .filter(function() {
代码语言:txt
AI代码解释
复制
    return this.nodeType === 3; //Node.TEXT_NODE
代码语言:txt
AI代码解释
复制
  });

秋之夕颜清

发布于 2017-12-26 08:25:53

Query没有一个方便的功能。你需要结合contents(),这将只给子节点,但包括文本节点,与find(),这给所有后代元素,但没有文本节点。以下是我想到的:

代码语言:txt
AI代码解释
复制
var getTextNodesIn = function(el) {
代码语言:txt
AI代码解释
复制
    return $(el).find(":not(iframe)").addBack().contents().filter(function() {
代码语言:txt
AI代码解释
复制
        return this.nodeType == 3;
代码语言:txt
AI代码解释
复制
    });
代码语言:txt
AI代码解释
复制
};

getTextNodesIn(el);

注意:如果您使用jQuery 1.7或更早的版本,上面的代码将不起作用。要解决这个问题,请addBack()用andSelf()。andSelf()被弃用,addBack()从1.8开始。

与纯DOM方法相比,这样做效率不高,而且必须包含一个丑陋的解决方法,以便jQuery重载其contents()函数(感谢@rabidsnail在注释中指出了这一点),所以这里是非jQuery解决方案,使用简单的递归函数。该includeWhitespaceNodes参数控制是否在输出中包含空格的文本节点(在jQuery中,它们被自动过滤掉)。

更新:修正了includeWhitespaceNodes错误时的错误。

代码语言:txt
AI代码解释
复制
function getTextNodesIn(node, includeWhitespaceNodes) {
代码语言:txt
AI代码解释
复制
    var textNodes = [], nonWhitespaceMatcher = /\S/;
代码语言:txt
复制
代码语言:txt
AI代码解释
复制
    function getTextNodes(node) {
代码语言:txt
AI代码解释
复制
        if (node.nodeType == 3) {
代码语言:txt
AI代码解释
复制
            if (includeWhitespaceNodes || nonWhitespaceMatcher.test(node.nodeValue)) {
代码语言:txt
AI代码解释
复制
                textNodes.push(node);
代码语言:txt
AI代码解释
复制
            }
代码语言:txt
AI代码解释
复制
        } else {
代码语言:txt
AI代码解释
复制
            for (var i = 0, len = node.childNodes.length; i < len; ++i) {
代码语言:txt
AI代码解释
复制
                getTextNodes(node.childNodes[i]);
代码语言:txt
AI代码解释
复制
            }
代码语言:txt
AI代码解释
复制
        }
代码语言:txt
AI代码解释
复制
    }
代码语言:txt
复制
代码语言:txt
AI代码解释
复制
    getTextNodes(node);
代码语言:txt
AI代码解释
复制
    return textNodes;
代码语言:txt
AI代码解释
复制
}
代码语言:txt
复制
代码语言:txt
AI代码解释
复制
getTextNodesIn(el);
和开发者交流更多问题细节吧,去 写回答
相关文章
xpath库详解xpath入门获取所有节点 //子节点 /父节点 ..属性匹配 @文本获取按序选择节点轴选择
python爬虫抓取网页内容,需要对html或xml结构的数据进行解析,如果用正则,单是写正则表达式就让很多望而生畏了。
章鱼喵
2018/09/26
25.7K0
xpath库详解xpath入门获取所有节点 //子节点 /父节点 ..属性匹配 @文本获取按序选择节点轴选择
Jquery 节点操作
今天公司项目,用到了Jq节点操作,好久没用了,查了查文档,做下记录,也能方便小伙伴们借鉴,写的不好之处多多理解.......
IT工作者
2021/12/30
8510
js让光标选择节点中部分文本
Range的MDN:https://developer.mozilla.org/zh-CN/docs/Web/API/Range/setStart
阿超
2022/08/21
2.9K0
js让光标选择节点中部分文本
cdn节点选择的机制是什么?如何自己选择cdn节点呢?
在网络中目前分布着大量的cdn节点,这些节点能够有效的提升用户访问其他网站的速度,解决因为网络延迟而造成的访问速度慢、使用体验差等问题,那么cdn节点选择的机制是什么?如何自己选择cdn节点呢?
用户8715145
2021/09/18
3.4K0
cdn节点选择的机制是什么?如何自己选择cdn节点呢?
jquery当中如何Set和Get文本
例 1.3(SetGetinnerHtml.html) <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML> <HEAD> <TITLE> </TITLE> <script src="jquery.js"></script> <SCRIPT LANGUAGE="JavaScript"> <!-- function getHTML() {   /* $("#info").html(); 代码1是返回指定元素的innerHTML值; $("#info").html("mark"); 代码2则是将mark这串字符设置到指定元素中 */     var message = $("#info").html();     alert(message) } function setHTML() {       $("#info").html("马克"); } //--> </SCRIPT> </HEAD> <BODY> <div id="info">mark</div> <INPUT TYPE="BUTTON" ONCLICK="getHTML()" value="获取"> <INPUT TYPE="BUTTON" ONCLICK="setHTML()" value="设置"> </BODY> </HTML>
马克java社区
2021/02/01
9010
jquery当中如何Set和Get文本
jquery 元素节点操作 - 创建节点、插入节点、删除节点
前面的篇章对于jquery的元素操作大部分是使用html()的方式来操作,这种直接使用字符串创建的方式也是性能最高的。
Devops海洋的渔夫
2019/05/31
9.2K0
前端框架 jQuery 和 Vue 如何选择?
不会前端开发的后端不是一个好的后端开发,平时写点小项目可以用得上,先简单了解一下前端这个概念。
良月柒
2019/09/29
9.4K1
前端框架 jQuery 和 Vue 如何选择?
表单文本框的使用(一) 选择文本
input和textarea都会在value属性保存自己的内容,可设置和读取文本框的值。在textarea中设置value属性无效
赤蓝紫
2023/03/16
1.8K0
表单文本框的使用(一)  选择文本
jquery 节点的删除
detach()方法删除跟remove()一样,在删除节点后,同样也可以赋值给变量再次使用。
坚毅的小解同志的前端社区
2022/11/28
1.8K0
jquery 节点的删除
jQuery基础--创建节点和 添加节点
创建节点 $(function () { // var box = document.getElementById("box"); // // var a = document.createElement("a"); // box.appendChild(a); // a.setAttribute("href", "http://web.itcast.cn"); // a.setAttribute("target", "_blank"); // a.innerHTML
eadela
2019/09/29
2.6K0
jQuery基础--创建节点和 添加节点
jQuery 选择器使用方法
下面的代码,只有外层段落的字体会改变颜色,里层不会,因为里层是属于 divInner 的直系元素
Remember_Ray
2020/03/09
4.7K0
jQuery 选择器使用方法
下面的代码,只有外层段落的字体会改变颜色,里层不会,因为里层是属于 divInner 的直系元素
Remember_Ray
2020/03/08
4.7K0
六、jQuery节点操作
replaceWith()与replaceAll()都会替换所有匹配的元素为指定元素。
Dreamy.TZK
2020/06/19
1.7K0
六、jQuery节点操作
jquery 获取元素(父节点,子节点,兄弟节点)
1、jquery 获取元素(父节点,子节点,兄弟节点) $("#test1").parent(); // 父节点 $("#test1").parents(); // 全部父节点 $("#test1").parents(".mui-content"); $("#test").children(); // 全部子节点 $("#test").children("#test1"); $("#test").contents(); // 返回#test里面的所有内容,包括节点和文本 $("#test").content
biaoblog.cn 个人博客
2022/08/11
5.9K0
jquery选择器用法_jQuery属性选择器
一、 基本选择器 1. ID选择器 ID选择器#id就是利用DOM元素的id属性值来筛选匹配的元素,并以iQuery包装集的形式返回给对象。 使用公式:(“#id”) 示例:(“#box”) //获取id属性值为box的元素 2. 元素选择器 元素选择器是根据元素名称匹配相应的元素。元素选择器指向的是DOM元素的标记名,也就是说元素选择器是根据元素的标记名选择的。 使用公式:(“element”) 示例:(“div”) //获取所有div元素 3.类名选择器 类选择器是通过元素拥有的CSS类的名称查找匹配的DOM元素。在一个页面中,一个元素可以有多个CSS类,一个CSS类又可以匹配多个元素,如果有元素中有一个匹配类的名称就可以被类选择器选取到。简单地说类名选择器就是以元素具有的CSS类名称查找匹配的元素。 使用公式:(“.class”) 示例:(“.box”) //获取class属性值为box的所有元素 4.复合选择器 复合选择器将多个选择器(可以是ID选择器、元素选择器或是类名选择器)组合在一起,两个选择器之间以逗号”,”分隔,只要符合其中的任何一个筛选条件就会被匹配,返回的是一个集合形式的jQuery包装集,利用jQuery索引器可以取得集合中的jQuery对象。 注意:多种匹配条件的选择器并不是匹配同时满足这几个选择器的匹配条件的元素,而是将每个匹配的元素合并后一起返回。 使用公式:(“selector1,selector2,……,selectorN”) selector1:一个有效的选择器,可以是ID选择器、元素选择器或类名选择器等 selector2:另一个有效的选择器,可以是ID选择器、元素选择器或类名选择器等 selectorN:(可选择)任意多个选择器,可以是ID选择器、元素选择器或类名选择器等 示例:(“div,#btn”) //要查询文档中的全部的<div>元素和id属性为btn的元素 5.通配符选择器
全栈程序员站长
2022/11/16
12.4K0
jQuery中属性选择器的使用
代码片段如下所示: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>属性选择器的使用</title> <style> </style> </head> <body> <button>获取具有href属性的 DOM 对象</button><br> <button>获取属性值为www.baidu.com对象</button><br> <button>获取属性值不为www.baidu.com对象<
软件小生活
2021/10/08
2.7K0
jQuery中属性选择器的使用
前端基础-jQuery节点操作
第10章 jQuery节点操作 10.1 创建节点 // $(htmlStr) // htmlStr:html格式的字符串 $('<span-这是一个span元素</span-'); 10.2 添加节点 append appendTo 在被选元素的结尾插入内容 父.append(子) 子.appendTo(父) prepend prependTo 在被选元素的开头插入内容 父.prepend(子) 子.prependTo(父) before insertBefore 在被选元素之后插入内容
cwl_java
2020/03/26
8030
71 - 使用Beautiful Soup 的节点选择器获取节点信息
如何使用Beautiful Soup 的节点选择器获取节点信息 from bs4 import BeautifulSoup html = ''' <html> <head> <title>获取节点信息</title> </head> <body> <div> <ul> <li class="item1" value1="1234", value2="hello world"><a href="https://www.xxx.com">ruochen</a></li>
ruochen
2021/06/13
1.4K0
71 - 使用Beautiful Soup 的节点选择器获取节点信息
jquery之节点获取和font标签不推荐使用
获取startDateText值为<p style="color: red">*</p>有效时间
周杰伦本人
2023/10/12
2940
jQuery 选择器
基本选择器 基本选择器是最简单的选择器,可以通过元素id、class和标签名等来直接查找DOM元素。 元素选择器 根据给定元素名匹配元素。如下选择的是所有div元素。 $("div").css("
静默虚空
2018/01/05
7.6K0

相似问题

jQuery如何获取textarea文本?

2773

如何在元素中选择文本?

2302

如何使用jQuery选择<select>的第一个选项?

2912

如何使用节点做基本测试?

2488

如何更改jQuery中的按钮的文本?

21K
相关问答用户
擅长3个领域
平安资管 | 架构师擅长4个领域
擅长4个领域
高级数据分析师擅长5个领域
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档