疑惑jQuery的parents和closets

K-dash 2014-04-06 11:37:39
我从文档中了解到有closets这个文档筛选方法,只要符合的父元素即停止向上递归,相较parents是更省事的,一般我做页面的经验来总结,平时取父元素都是只取最先遇到的第一层然后用它来做些什么事,不需要再向上找父元素了,所以我优先考虑使用closest来筛选父元素,然而这好像只是我的观点

怎么我看到那些所谓的jQuery效率提升的10条建议之类的文章都没有提到这个问题?是不是closest筛选有什么问题?而我平时看到的别人的插件什么的代码好像也是用parents来的,难道我错了吗?我在怀疑自己了,但我在得到确切答案前,都会继续使用closets,因为目前我什么问题都没有遇到

希望大家谈谈这方面的看法和经验,谢谢
...全文
100 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhjdg 2014-04-07
  • 打赏
  • 举报
回复
首先,大家都用cur.parentNode找parent. closest [自己,parent] 是包含自己的 ,每找到一个 就jQuery.find.matchesSelector(cur, selectors) parents 先把所有的parent找出来,然后再一个一个的排除。jQuery.find.matches( expr,[all]) 如果就找一个parent, 那用.parent当然最好。
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script src="../lib/jquery/jquery-1.10.2.js"></script>
</head>
<body>

	<div id='lv0' class='m'>ee
		<div id='lv1' class='m'>vv
			<div id='lv2' class='m'> dd</div>
		
		</div>
	
	
	
	</div>
	<script>
		var $r = $("#lv2");
		var $a = $r.closest('.m');
		var $b = $r.parents('.m');
		
	</script>
</body>
</html>
张运领 2014-04-07
  • 打赏
  • 举报
回复
closest() closest的查找是从它本身开始,如果在查找时,它本身也符合查找条件的话,会返回它本身的, 可是有时候呢,我们确实需要的必须是它的父元素,所以就不会使用这个,而是使用parent(), 我觉得没有什么问题,主要还是看使用的坏境,以及需要完成的功能吧。 就算是只要查找最近的父元素,也常用parent的话,我觉得还是因为这个API的名字更容易记忆,更能表现这个API的功能吧,也就是语义更明显吧。
嘻哈大咖秀 2014-04-07
  • 打赏
  • 举报
回复
parent()方法从指定类型的直接父节点开始查找 parents()方法查找方式同parent()方法类似,不同的一点在于,当它找到第一的父节点时并没有停止查找,而是继续查找,最后返回多个父节点 closest()方法查找时从包含自身的节点找起,它同parents()很类似,不同点就在于它只返回一个节点 实现的功能同parent()相同,但它使得代码量减小,同parents()相比又只返回单一的一个节点。可见,closest()方法在项目中的使用频率是比较大的。

87,910

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧