Jquery 同一个元素的$(';';类';,element)是什么意思?

Jquery 同一个元素的$(';';类';,element)是什么意思?,jquery,jquery-selectors,Jquery,Jquery Selectors,我不反对这种语法: var dir = $("a.store").parents("table")[0]; var stores = $("a.store:has(b)", dir); 存储包含哪些内容 “$”(“a.store:has(b)”,dir);“?它将返回与css选择器匹配的dom元素集合(“a.store:has(b)”),这些元素是存储在'dir'变量中的dom元素的子元素。在您的示例中,dir是选择器的上下文。从Felix在评论中的链接: 默认情况下,选择器从文档根开始在DO

我不反对这种语法:

var dir = $("a.store").parents("table")[0];
var stores = $("a.store:has(b)", dir);
存储
包含哪些内容


“$”(“a.store:has(b)”,dir);“

它将返回与css选择器匹配的dom元素集合(“a.store:has(b)”),这些元素是存储在'dir'变量中的dom元素的子元素。

在您的示例中,
dir
是选择器的上下文。从Felix在评论中的链接:

默认情况下,选择器从文档根开始在DOM中执行搜索。但是,可以使用$()函数的可选第二个参数为搜索提供备用上下文。例如,要在事件处理程序中执行搜索,可以对搜索进行如下限制:

$('div.foo').click(function() {
  $('span', this).addClass('bar');
});
从jquery文档中

:has()选择器

选择至少包含以下内容的元素: 至少有一个元素与 指定的选择器

表达式$('div:has(p)')匹配 如果
存在于 它的后代,不仅仅是一个直系亲属 孩子

关于jQuery的第二个参数,它是上下文。它可以是选择器操作的DOM元素

就你而言: var dir将有一个
,它是

将获取所有具有类
元素。存储

.parents("table")[0];
将获取这些
所在的表

$("a.store:has(b)", dir);
将使用以前找到的表
dir
作为上下文,查找所有具有类
.store
并包含
元素的
元素,这意味着它不会遍历整个文档以查找匹配项,而只遍历这些表。

以最简单的形式

这相当于做

$('someParent').find('.matchingDescendants');
jQuery有文档:更准确地说,是子代,而不仅仅是子代。
$('someParent').find('.matchingDescendants');