2011-06-25 49 views
0

我不unterstand这句法:

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

会有什么store包含哪些内容?

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

+1

jQuery有文档:http://api.jquery.com/jQuery/#jQuery1 –

回答

3

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

+2

为了更准确: *后代*,不仅是孩子。 –

2

在你的例子中,dir是选择器的上下文。来自Felix链接的docs评论:

默认情况下,选择器在DOM文档根开始执行搜索。但是,可以通过对$()函数使用可选的第二个参数来为搜索提供备用上下文。例如,做一个事件处理程序内的搜索时,搜索可被限制,像这样:

$('div.foo').click(function() { 
    $('span', this).addClass('bar'); 
}); 
+0

谢谢你:),给我很好的例子 – VijayKR

1

从jQuery文档,

:具有()选择器

选择至少包含一个与 指定选择器相匹配的元素,其中包含 。

表达式$( 'DIV:有(P)')如果<p> 其后代中任何地方存在,不只是作为一个直接 孩子匹配 一个<div>

http://api.jquery.com/has-selector/

关于第二参数将jQuery,它是上下文。它可以是选择器运行的DOM元素。

你的情况: VAR目录将有一个table这是<a class="store" ...

父店里变量将仅包含那些<a class="store" ..其中有一个<b>在他们里面。

1
$("a.store") 

会得到具有类.store

.parents("table")[0]; 

才会得到这些<a>驻留在桌全部<a>元素。

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

会发现,有类.store和包含<b>元素的所有<a>元素,使用先前发现表dir的背景下,这意味着的而不是通过整个文档以查找匹配,它只会经历这些表格。

+0

谢谢你,明白了:) – VijayKR

0

最简单的形式..

它等同于做..

$('someParent').find('.matchingDescendants'); 
相关问题