这句jquery什么意思? 20

$("p").contents().filter(function(){returnthis.nodeType!=1;}).wrap("<b/>");特别是后面这个.fi... $("p").contents().filter(function(){ return this.nodeType != 1; }).wrap("<b/>");

特别是后面这个.filter(function(){ return this.nodeType != 1; }),是什么意思?
展开
 我来答
帐号已注销
推荐于2016-04-24 · TA获得超过4630个赞
知道大有可为答主
回答量:1345
采纳率:50%
帮助的人:1630万
展开全部

方法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度哦。请重新正确解释。谢谢。
丶小的莉视9674
2014-08-11 · TA获得超过538个赞
知道答主
回答量:171
采纳率:0%
帮助的人:57.9万
展开全部
$('#newTestQuestion').html() 这句话是取 ID=“newTestQuestion”容器的内容。
$(this.parentNode) 这句话是取当前元素的父对象
$(this.parentNode).before(),是在所取父对象的前面加入 before后面括号的内容。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式