Javascript jQuery选择器上下文问题

Javascript jQuery选择器上下文问题,javascript,jquery,Javascript,Jquery,我正在尝试做以下选择: $(".program", row) 其中“row”是包含两个表行的jQuery对象。其中一个tr具有“program”类。此选择器似乎找不到该类。但以下操作有效: $(".title", row) 其中div.title是tr.program的后代 如果使用jQuery对象作为选择器上下文,是否无法匹配该jQuery对象的顶级元素 谢谢 -Morgan您肯定能够匹配顶级元素。我们可以查看您使用的源代码吗?您的代码应该正常工作,因此HTML本身可能有问题。您使用子体的

我正在尝试做以下选择:

$(".program", row)
其中“row”是包含两个表行的jQuery对象。其中一个tr具有“program”类。此选择器似乎找不到该类。但以下操作有效:

$(".title", row)
其中div.title是tr.program的后代

如果使用jQuery对象作为选择器上下文,是否无法匹配该jQuery对象的顶级元素

谢谢


-Morgan

您肯定能够匹配顶级元素。我们可以查看您使用的源代码吗?您的代码应该正常工作,因此HTML本身可能有问题。

您使用子体的路径正确。将上下文传递给选择器将搜索在该上下文中找到的所有子体

在您的例子中,因为对象不是“包含两行的父对象”,而是“行的集合”“,。程序不可选择。由于.title是集合中的实际后代,因此它是可选择的。

我的理解是,上下文需要是根级别,即您希望在其中进行选择的父级

编辑: 现在阅读了一些内容之后,您应该能够匹配上下文的顶级元素 (默认上下文是
文档

有一篇关于使用jQuery选择器的上下文的好文章。通常,您应该尝试传递一个元素id作为jQuery包装集的上下文,因为这是定位元素最有效的方法


在内部,选择器上下文是通过
.find
方法实现的,因此
$(选择器,上下文)
相当于
$(上下文)。find(选择器)
看起来您试图从已经选择的元素中选择元素(位于jQuery对象中)

就jQuery而言,上下文就像指定父级一样——上下文是在DOM树中查找的节点之上的某个位置。上下文是jQuery查找您指定的选择器的地方

如果我对您尝试执行的操作的理解是正确的,那么这应该是可行的:

row.filter('.program');

// And then:
row.filter('.program').find('.title');

酷。谢谢你证实我的观察。我的对象是$(someHTML).appendTo(aTable)的result。关于按类选择其中一行的最佳方法,有什么建议吗?我可以在jquery对象上进行迭代,但我希望得到更漂亮的东西。使用jquery的$进行迭代。如果您想保留现有的选择器代码,则每个函数都不是那么难看。如果它等效于
$(上下文)。查找(选择器)
那么应该注意的是,如果选择器是一个元素,它将不会匹配上下文本身,因为find()只匹配子体。@Jason没错,上下文是要搜索的范围,不包括它本身