Javascript 使用jQuery获取DOM中的Descent节点
有人能告诉我jQuery的等价物是什么吗Javascript 使用jQuery获取DOM中的Descent节点,javascript,jquery,dom,Javascript,Jquery,Dom,有人能告诉我jQuery的等价物是什么吗 var shapes=document.getElementsByTagName("shapes")[0]; thisCircle=shapes.getElementsByTagName("circle")[index]; 有几种方法可以做到这一点。我是这样写的: $('shapes').first().find('circle').eq(index) 您可以直接在CSS选择器中使用标记,并使用诸如:first之类的修饰符,让CSS选择器引擎为您完成
var shapes=document.getElementsByTagName("shapes")[0];
thisCircle=shapes.getElementsByTagName("circle")[index];
有几种方法可以做到这一点。我是这样写的:
$('shapes').first().find('circle').eq(index)
您可以直接在CSS选择器中使用标记,并使用诸如
:first
之类的修饰符,让CSS选择器引擎为您完成大部分工作,并创建最少的中间jQuery对象
.eq(index)
从找到的所有项中选择索引
项,并返回jQuery对象。直接使用数组语法(如[index]
对其进行索引)将返回一个DOM对象(不是jQuery对象):
关于这里发生的事情的逐步描述如下:
eq()
方法,创建一个新的jQuery对象,该对象只包含索引
圆形对象(例如,仅第三个)$('shapes').eq(0).查找('circle').eq(index)
$('shapes:first circle”)[index]
,只要浏览器将形状
和圆
识别为有效元素。这是我最初尝试的方法,但我没有使用“:first”。因此,我有错误的语法。谢谢你,彼得。的确如此!非常感谢你!当等待期结束时,我会接受答案。有时将多个规范放入选择器比调用多个方法更有效。两者都可以很好地工作,但是如果可能的话,我更愿意让CSS选择器语法做更多的工作,这让选择器引擎有更多的机会优化操作。请注意,这段代码创建了四个独立的jQuery对象。@jfriend00:jQuery尝试使用getElementById
和类似的函数,然后再使用querySelectorAll
和它自己的DOM遍历方法(由于:first
),因此使用简单选择器的方法通常更快:@Blender-wow,querySelectorAll()
必须要有两个额外的方法调用和两个额外的中间jQuery对象才能更快。@jfriend00:如果实际使用它,速度会快得多。[name=“shapes”]
与getElementsByTagName(“shapes”)做的事情不同。
$("shapes:first circle").eq(index)
$("shapes:eq(0) circle").eq(index);
I think this should work:
$('[name="shapes"]').first().find('circle').eq(index);