我不明白这种语法:
var dir = $("a.store").parents("table")[0];
var stores = $("a.store:has(b)", dir);
store
包含哪些内容?
"$("a.store:has(b)", dir);"
是什么意思?
答案 0 :(得分:3)
它将返回一个与css选择器匹配的dom元素集合(“a.store:has(b)”),这些元素是存储在'dir'变量中的dom元素的子元素。
答案 1 :(得分:2)
在您的示例中,dir
是选择器的上下文。来自Felix在评论中链接的docs:
默认情况下,选择器在DOM中从文档根开始执行搜索。但是,通过使用$()函数的可选第二个参数,可以为搜索提供备用上下文。例如,要在事件处理程序中进行搜索,可以限制搜索:
$('div.foo').click(function() { $('span', this).addClass('bar'); });
答案 2 :(得分:1)
来自jquery docs,
:has()选择器
选择包含at的元素 至少一个匹配的元素 指定选择器。
表达式$('div:has(p)')匹配
<div>
<p>
如果table
存在于其中的任何地方 它的后代,不仅仅是直接的 子。
http://api.jquery.com/has-selector/
关于jQuery的第二个参数,它是上下文。它可以是选择器操作的DOM元素。
在你的情况下:
var dir将有<a class="store" ...
,它是<a class="store" ..
商店变量将仅包含其中包含<b>
的{{1}}个。
答案 3 :(得分:1)
$("a.store")
将获得具有类<a>
.store
个元素
.parents("table")[0];
将获取这些<a>
所在的表格。
$("a.store:has(b)", dir);
将找到包含<a>
类且包含.store
元素的所有<b>
元素,使用以前找到的表dir
作为上下文,这意味着不是通过要查找匹配的整个文档,它只会通过这些表格。
答案 4 :(得分:0)
以最简单的形式......
它相当于做..
$('someParent').find('.matchingDescendants');