2011-05-12 76 views
6

以下代码取自timers jQuery插件演示。我不明白第2行中的选择器中发生了什么。看起来它选择了p元素,但是在逗号后面的第二个参数是什么 - demos - 那是为什么?帮助理解jQuery选择器示例

的jQuery:

var demos = $("div.wrapper div.demos");    
$(".uncontrolled-interval p", demos).everyTime(1000,function(i) { 
        $(this).html(i); 
       }); 

HTML:

<div class="wrapper"> 
    <div class="demos">   
     <div class="uncontrolled-interval"> 
      <p>I am transient... *sigh*</p> 
     </div>  
    </div> 
</div> 

感谢

回答

4

它指定了搜索的范围。基本上是一个过滤器。

http://api.jquery.com/jQuery#expressioncontext

因此,在这个例子中搜索.uncontrolled-interval pdemos元素。如果你有这个标记,它仍然只会选择demos中的那个。

<div class="wrapper">   
    <div class="uncontrolled-interval"> 
     <p>I am transient... *sigh*</p> //Will not select 
    </div>  
    <div class="demos">   
     <div class="uncontrolled-interval"> 
      <p>I am transient... *sigh*</p> //Will select 
     </div>  
    </div> 
</div> 
+0

@ Dustin- thanks-有道理 – Yarin 2011-05-12 19:48:42

2

当使用jQuery函数(或其别名$)与jQuery选择元素,可以提供上下文以及一个选择器所描述here

什么,说的是:选择每一个给定的背景内所提供的CSS 选择相匹配,与语境这意味着你已经选择了DOM的区域元素。

换言之,它说:使用上下文作为正在搜索的DOM树的根,而不是文档根。

+0

@ Dancrumb-感谢您的详细解释 – Yarin 2011-05-12 19:50:51

2

除了别人回答,上下文类似于.find()

内部,选择上下文是 与.find()方法, 所以$实现( '跨',这一点)相当于 $(本).find( '跨')。

Personnaly,我更喜欢写demos.find(".uncontrolled-interval p")$(".uncontrolled-interval p", demos)

+0

@ Benoit-另一个好点 - 感谢 – Yarin 2011-05-12 20:38:47