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

时间:2011-06-25 17:11:38

标签: jquery jquery-selectors

我不明白这种语法:

var dir = $("a.store").parents("table")[0];
var stores = $("a.store:has(b)", dir);

store包含哪些内容?

"$("a.store:has(b)", dir);"是什么意思?

5 个答案:

答案 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');
相关问题