JQuery.closest(),parent(),parents()寻找父结点_jquery

HTML代码,测试地址:jQuery 遍历 - closest() 方法

------我粘代码上来,在页面上会自动隐藏(会显示一下)!谁能教我这是肿么回事!
1.通过item-1查找 level-3(查找直接上级)

复制代码 代码如下:

$('li.item-1').closest('ul')
$('li.item-1').parent()
$('li.item-1').parents().eq(0)

2.通过item-1查找 level-2(通过选择器查找父元素)

复制代码 代码如下:

$('li.item-1').closest('.level-2')
//$('li.item-1').parent('.level-2') //找不到,parent()方法只遍历到上一层!
$('li.item-1').parent().parent() //这个太二了有木有!
$('li.item-1').parents('.level-2')

parent(selector)中selector的用法

复制代码 代码如下:

$('li').parent() //返回level-3,level-2和level-1的集合,它们都是li的父元素
$('li').parent('.level-3') //在上述集合中筛选出 level-3

3.closest方法从当前元素开始遍历,而parent()从父元素开始!
$('li.item-1').closest('li') //返回 item-1,使用时要注意,如果是一个div嵌套在中一个div中,要考虑选择器的正确使用!
4.closet(selector,context)中context参数的用法 从当前元素开始遍历到context元素结束,若不存在context参数遍历到根结点
由此可见使用context参数可以提高查询效率!

复制代码 代码如下:

var listItemII = document.getElementById('ii'); //Item-II
//var listItemII=$(‘#ii'),这个不行,困惑好很久!
$('li.item-1').closest('ul', listItemII).css('background-color', 'red');
//结果必须是 item-1的父级ul元素,itemII的子元素,
$('li.item-1').closest('#one', listItemII).css('background-color', 'green');
//item-1的id=one的元素,且必须是itemII的子元素,未找到

5.context参数的分析

复制代码 代码如下:

closest: function( selectors, context ) {
var ret = [], i, l, cur = this[0];
// String
var pos = POS.test( selectors ) || typeof selectors !== "string" ?
jQuery( selectors, context || this.context ) :
0;
for ( i = 0, l = this.length; i < l; i++ ) {
cur = this[i];
while ( cur ) {
if ( pos ? pos.index(cur) > -1 : jQuery.find.matchesSelector(cur, selectors) ) {
//找到匹配元素,则将其添加返回值集合中!跳到下一元素的查找
ret.push( cur );
break;
} else {
cur = cur.parentNode;
//向上遍历DOM树,匹配选择器
//在上述过程中如果父结点不存在,到达根结点不存在或者找到context结点(已到达指定位置)!
if ( !cur || !cur.ownerDocument || cur === context || cur.nodeType === 11 ) {
break;
}
}
}
}
ret = ret.length > 1 ? jQuery.unique( ret ) : ret;
return this.pushStack( ret, "closest", selectors );
}

对JQuery源码不是很了解,其中的一些细节就不解释了!
通过closest()的定义可以得知,与context进行对比的变量cur=this[i]是一个DOM对象,而$('#ii')方法得到的是一个JQuery对象,因此传给closest(selector,context)方法的context参数必须通过DOM方法获得!
jQuery对象和DOM对象的转换?
1.获取对象(变量名前加$目的为约定区别JQuery和DOM变量):
获取jQuery对象:var $variable=jQuery对象;
获取DOM对象:var variable=DOM对象;
2.jQuery对象转DOM对象:
利用数组转换 var cr=$("#cr")[0];
利用get(index)方法转换 var cr=$("#cr").get(0);
3.DOM对象转jQuery对象:

复制代码 代码如下:

var cr=document.getElementsById("cr"); //获取DOM对象
var $cr=$(cr);//转换为jQuery对象

SO….
$('li.item-1').closest('#one', $(‘#ii').get(0))//如此使用
或者将源码中 "cur===context”的判断改为 "$(cur)===$(current)",这样就可以兼容两种用法!
当然,修改源码并不是一个好建议,但是为什么JQuery本身没有使用这种方式呢……求指教 !!!

时间: 2024-12-19 20:17:46

JQuery.closest(),parent(),parents()寻找父结点_jquery的相关文章

jQuery中closest和parents的区别分析_jquery

jQuery中closest和parents从表现上来看都是说查找上线元素的一些内容了,但如果说仔细可能各位不懂,下面我们一起来看看closest和parents区别. 1.父级 parent()--唯一父级元素,可能是0个或1个元素. 2.祖先 parents(selected)--所有selected祖先(不包含根元素),可能是0个.1个或多个元素. closest(selected)--唯一selected祖先,可能是0个或1个元素. closest和parents的主要区别是: 前者从当

Jquery的parent,parents与children

    parent是指取得一个包含着所有匹配元素的唯一父元素的元素集合. parents则是取得一个包含着所有匹配元素的祖先元素的元素集合(不包含根元素).可以通过一个可选的表达式进行筛选. parent取的很明确,就是当前元素的父元素:parents则是当前元素的祖先元素.   例子: <div id="div1">   <div id="div2">hello</div>   <div id="div3&qu

jQuery的:parent选择器定义和用法_jquery

:parent选择器的定义和用法: 此选择器匹配含有子元素或者文本的元素. 注意:空格也算是含有的元素. 语法结构: $(":parent") 此选择器一般也要和其他选择器配合使用,比如类选择器和元素选择器等等.例如: $("div:parent").animate({width:"300px"}) 以上代码能够将含有文本或者元素的div的宽度设置为300px. 如果不和其他选择器配合使用,则默认状态是和*选择器配合使用,例如$(":p

jQuery中closest和parents的区别分析

  本文给大家介绍jquery中parents()和closest()用法与区别介绍,在jquery中parents()查找父级元素删除的时候,发现它不包含根元素,于是用了closest(),效果不错,下面我来给大家具体的介绍一下 jQuery中closest和parents从表现上来看都是说查找上线元素的一些内容了,但如果说仔细可能各位不懂,下面我们一起来看看closest和parents区别. 1.父级 parent()--唯一父级元素,可能是0个或1个元素. 2.祖先 parents(se

jquery获取子节点和父节点的示例代码_jquery

一.获取子节点 比如是一个 id 为 test 的 div元素,我们这样选中,$('#test'),我们要查找这个div下的一个class为demo的span元素,有一下几种方法 1.使用筛选条件 $('#test span.demo') 2.使用find()函数 $('#test').find('span.demo') 3.使用children()函数 $('#test').children('span.demo') 二.获取父节点 jquery获取父元素方法比较多,比如parent(),pa

jQuery中closest和parents的区别

1.父级 parent()--唯一父级元素,可能是0个或1个元素. 2.祖先 parents(selected)--所有selected祖先(不包含根元素),可能是0个.1个或多个元素. closest(selected)--唯一selected祖先,可能是0个或1个元素. closest和parents的主要区别是: 前者从当前元素开始匹配寻找,后者从父元素开始匹配寻找: 前者逐级向上查找,直到发现匹配的元素后就停止了,后者一直向上查找直到根元素,然后把这些元素放进一个临时集合中,再用给定的选

jquery中closest()与parents()的方法区别分析总结

在jquery中parents()查找父级元素删除的时候,发现它不包含根元素,于是用了closest(),效果不错,下面我给大家具体的介绍 closest closest() 方法获得匹配选择器的第一个祖先元素,从当前元素开始沿 DOM 树向上 语法: .closest(selector, context) 参数selector为字符串值,用以过滤匹配元素的择器表达式 参数context可选,作为待查找的 DOM 元素集或者文档 context参数 closet(selector,context

jQuery中parent()方法用法实例_jquery

本文实例讲述了jQuery中parent()方法用法.分享给大家供大家参考.具体分析如下: 此方法取得匹配元素集合中每个元素的紧邻父元素,也就是第一级父元素,而不是所有的祖先元素. 所取得的父元素集合也可以使用表达式进行筛选. 语法结构: 复制代码 代码如下: $(selector).parent(expr) 参数列表: 参数 描述 expr 可选.用来筛选的表达式 实例代码: 实例一: 复制代码 代码如下: <!DOCTYPE HTML> <html> <head>

有关jQuery中parent()和siblings()的小问题_jquery

今天发现一个小问题,现在也不知道到底是哪个梗在作祟,但是感觉是parent()和siblings()其中的一个. 我是想这样的根据输入的条件删选内容: demo: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <script src="http://co