jQuery(elementArray)-仅选择数组项的子项
jQuery可以接受元素数组jQuery(elementArray)-仅选择数组项的子项,jquery,jquery-selectors,Jquery,Jquery Selectors,jQuery可以接受元素数组 jQuery( elementArray ) 我是否误解了elementArray参数的用法,或者这是一个jQuery错误 据推测,应用的任何选择器都将应用于数组中作为项或项的子项的所有htmlElement。但是,它似乎只选择数组项的子项 例如,在具有以下内容的数组中,它将不匹配具有topLevelDiv或topLevelSpan类的元素 elementArray[0] contains <div class="topLevelDiv">
jQuery( elementArray )
我是否误解了elementArray参数的用法,或者这是一个jQuery错误
据推测,应用的任何选择器都将应用于数组中作为项或项的子项的所有htmlElement。但是,它似乎只选择数组项的子项
例如,在具有以下内容的数组中,它将不匹配具有topLevelDiv或topLevelSpan类的元素
elementArray[0] contains
<div class="topLevelDiv">
<span class="childSpan"></span><div class="childDiv"></div>
</div>
elementArray[1] contains
<span class="topLevelSpan">
<span class="childSpan"></span>
</span>
下面是一个演示:
jQuery正在按预期工作,当您查找上下文的第二个参数或提供上下文的第二个参数时,您将在指定的元素中查找所需的内容。如果要按elementArray中的顶部节点进行筛选,则需要使用
筛选
功能。jQuery按预期工作,当您执行查找
或为上下文提供第二个参数时,您将在指定的元素中查找所需内容。如果要按elementArray中的顶部节点进行筛选,则需要使用筛选
功能。jQuery(elementArray)
创建一个包含数组中所有元素的jQuery对象。应用于该jQuery对象的任何操作都将应用于数组中的所有元素
因此,如果您这样做:
jQuery( elementArray ).css("color", "red");
它将在所有这些元素中使文本变为红色。jQuery操作将应用于这些特定元素。它不会直接应用于这些元素的任何子元素。它是否影响儿童取决于手术的内容。这与jQuery的设计一样
当您说“任何应用的选择器”时,您的意思并不清楚,因为在执行jQuery(elementArray)
时,没有涉及选择器
您可以使用jQuery(elementArray)过滤jQuery(elementArray)
。过滤(选择器)
,然后将从jQuery对象中删除数组中与选择器不匹配的元素
或者,您可以像在jQuery(elementArray).find(selector)
中一样使用.find()
。这将查看elementArray中每个元素的子体,查找与选择器匹配的子体,并将找到的所有子体放入返回的新jQuery对象中。jQuery(elementArray)
创建一个包含数组中所有元素的jQuery对象。应用于该jQuery对象的任何操作都将应用于数组中的所有元素
因此,如果您这样做:
jQuery( elementArray ).css("color", "red");
它将在所有这些元素中使文本变为红色。jQuery操作将应用于这些特定元素。它不会直接应用于这些元素的任何子元素。它是否影响儿童取决于手术的内容。这与jQuery的设计一样
当您说“任何应用的选择器”时,您的意思并不清楚,因为在执行jQuery(elementArray)
时,没有涉及选择器
您可以使用jQuery(elementArray)过滤jQuery(elementArray)
。过滤(选择器)
,然后将从jQuery对象中删除数组中与选择器不匹配的元素
或者,您可以像在
jQuery(elementArray).find(selector)
中一样使用.find()
。这将查看elementArray中每个元素的子代,以查找与选择器匹配的子代,并将找到的所有子代放入返回的新jQuery对象中。:jsFiddle它的使用方式。@mblase75:lol的想法是一样的:)这看起来确实像是可能存在的问题通过阅读文档来回答。@AnthonyGrist:我相信文档已经阅读过了,并且发现很混乱(注意他们文章第一行的链接?)。我同意OP在这一点上的观点。@mellamokb.find()
的文档对我来说似乎很清楚,不知道该函数的功能是什么导致了问题:jsFiddle它的使用方式。@mblase75:lol的想法是一样的:)这看起来确实像是一个可以通过阅读文档来回答的问题。@AnthonyGrist:我相信文档已经阅读过,并且发现很混乱(注意他们文章第一行的链接?)。我同意OP在这一点上的观点。@mellamokb.find()
的文档对我来说似乎很清楚,不知道该函数的作用是什么导致了问题。从我在filter上读到的内容来看,它接受的是一个jQuery对象,而不是一个普通数组,例如[HtmleElement,HtmleElement…]。$(elementArray)
是一个jQuery对象。如果调用$(elementArray).filter('div')
而不是$(elementArray).find('div')
您会发现它可以按预期工作。从我在filter上读到的内容来看,它接受的是jQuery对象,而不是普通数组,例如[htmlElement,htmlElement…])。$(elementArray)
是jQuery对象。如果您调用$(elementArray).filter('div')
,而不是$(elementArray).find('div')
,您会发现它可以正常工作。谢谢。过滤和查找生成相反的匹配集<代码>$(elementArray).find('div')产生[div.childDiv]
,和$(elementArray.filter('div')
产生[div.topLevelDiv]
。我一直在寻找更像XPath PathExpr/
的东西,它选择“在任何级别”,将这两个集合结合起来。@Monte,我从来都不清楚您到底想做什么(现在仍然不想做),这就是为什么我描述了几个不同的选项,希望其中一个与您想做的事情相交。如果希望合并两个不同的选择,可以使用.add()
方法将新元素添加到现有的jQuery对象中,或者合并两个jQuery对象,或者将新选择器操作的结果添加到