这句jquery什么意思? 20
特别是后面这个.filter(function(){ return this.nodeType != 1; }),是什么意思? 展开
方法contents的作用是查找匹配元素内部所有的子节点(包括文本节点)。如果元素是一个iframe,则查找文档内容。
所以$('p').contents()得到的结果是所有p标签下的节点。
方法filter的作用是过滤结果集,它接收四种类型的参数,选择器字符串、jq对象、dom对象、函数,都可以。目的只有一个,时被过滤的结果集中,满足参数条件的节点保留下来;反之不满足的节点全部移除。比如说$('p').filter('.cls'),它的意思就是先获取所有的p标签,然后使用filter方法,把带有class为cls的p标签保留下来,不带cls类的p标签则不会保留。
如果是filter的参数是函数,则结果集中每一个元素都会经过这个函数的筛选,只有这个函数返回true时,这个元素才会被保留,否则被移出结果集。这个函数可以接收一个参数,这个参数是当前检测的元素在结果集中的下标。在这个函数中,this指向的是当前被检测的节点对象。所以可以在这个函数中使用this来代替当前被检测的元素。
在题目中,filter的参数是一个函数:
function(){
return this.nodeType != 1;
}
考虑到this指代当前被检测的元素,所以这里实际上的意思是,过滤并保留结果集中,nodeType不等于1的元素。意即通过$('p').contents()得到的结果集中,会有一些nodeType为1的节点元素,也有一些不为1的节点元素,但通过filter处理之后,只会返回那些nodeType为1的元素。
nodeType为1意味着这个元素是一个html元素。nodeType还有其它取值,2表示是属性,3表示的是文本节点,即没有标签包裹的文本,8表示注释,即<!---->标签等等。
filter方法执行完毕后,会得到一些元素,这些元素满足处于p标签之下,是html元素的条件。
紧着在这个结果集上应用wrap方法,作用是给匹配到的元素外面包裹上一个b标签。
呵呵。上边是不为1的吧,请看清楚。差别可是180度哦。请重新正确解释。谢谢。