我试图理解这段代码做了什么,以及为什么我们在不使用 addBack() 的情况下获得相同的结果时使用 addBack() 和 find()

拿这两个例子

$("body div").find("*").addBack().contents().filter(function(){
    return this.nodeType === 3 && /shaolin/i.test(this.nodeValue);
})

对比
$("#myDiv").find("*").addBack().contents().filter(function(){
    return this.nodeType === 3 && /judo/i.test(this.nodeValue);
})

另外我们为什么要做/shaolin/i.test(this.nodeValue);?

最佳答案

find() 只返回匹配选择器的后代。该代码使用 addBack,因此除了所有后代元素之外,它还将搜索原始 body div 元素的内容。
如果没有顶级 DIV 元素与过滤器函数匹配,那么无论有没有 addBack ,结果都将相同。代码试图做到彻底,因此不会遗漏任何内容。
该代码正在查找 body div 中包含单词 shaolin 的所有文本节点。 /shaolin 是一个正则表达式,它根据此测试每个文本节点的值。

关于jquery - 为什么 addBack 与 Find() 一起使用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21923611/

10-12 13:11