Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用jQuery获取DOM中的Descent节点_Javascript_Jquery_Dom - Fatal编程技术网

Javascript 使用jQuery获取DOM中的Descent节点

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选择器引擎为您完成

有人能告诉我jQuery的等价物是什么吗

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对象):

关于这里发生的事情的逐步描述如下:

  • 找到第一个形状对象
  • 查找作为第一个形状对象的后代的所有圆对象,并构造一个包含所有这些圆对象的jQuery对象
  • 调用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);