Jquery 查找没有标记的任何文本

Jquery 查找没有标记的任何文本,jquery,Jquery,我有一些没有标签的文本。我试着找到它。使用jQuery (这是dinamic文本,所以我不知道我有多少和平文本或它们在哪里。我只知道它们在一个分区内。这与周围的其他问题不同) 我可以找到一个解决方案来查找没有标记的文本,将其包装在中,但这也会生成一些空的p标记。所以问题是: -这个.nodeType==3似乎可以查找文本和空格。有人能解释一下吗? -有人能解决这个问题吗,或者展示另一种只查找没有标记的文本的方法吗 (我发现nodeType==3“表示元素或属性中的文本内容”) 如果您喜欢在那里演

我有一些没有标签的文本。我试着找到它。使用jQuery

(这是dinamic文本,所以我不知道我有多少和平文本或它们在哪里。我只知道它们在一个分区内。这与周围的其他问题不同)

我可以找到一个解决方案来查找没有标记的文本,将其包装在
中,但这也会生成一些空的p标记。所以问题是:
-这个.nodeType==3似乎可以查找文本和空格。有人能解释一下吗?
-有人能解决这个问题吗,或者展示另一种只查找没有标记的文本的方法吗

(我发现nodeType==3“表示元素或属性中的文本内容”)

如果您喜欢在那里演奏小提琴:

$(“#tot”)。单击(函数(){
$(“div”).contents().filter(函数(){
返回this.nodeType==3;
}).wrap(“”);
});
p{背景:绿色;}

这是h1
不带p的文本

没有p的另一个文本
本文有p


避免换行和空白的一种解决方案是使用修剪,如:

$("#tot")
    .contents()
    .filter(function () {
    // get only the text nodes
    return this.nodeType === 3 && this.nodeValue.trim() !== "";
}).wrap("<p />");
$(“tot”)
.contents()
.filter(函数(){
//仅获取文本节点
返回this.nodeType==3&&this.nodeValue.trim()!==“”;
}).wrap(“

”);

参考资料

您可以使用
$.trim()
删除文本节点字符串开头和结尾的所有换行、空格(包括非分隔空格)和制表符

这将过滤掉那些仅为空格、制表符或换行符的文本节点

下面是示例和相应的代码片段

$(“#tot”)。单击(函数(){
$(“div”).contents().filter(函数(){
返回this.nodeType==3
&&$.trim($(this.text())!='';
}).wrap(“”);
});
p{背景:绿色;}

这是h1
不带p的文本

没有p的另一个文本
本文有p


好的,你可以找到它们,然后用它们做什么?在这个简化的例子中,我用一个p来表示。但是,它似乎会发现tooAFAIK
。trim()
会遗漏换行符和制表符。:)你能解释一下吗==“”这到底是做什么的?将包含空格的元素从包装中排除。如果你的意思是什么!==:不进行类型转换的非相等比较:如果操作数不相等或类型不同,则返回true。