2011-05-12 74 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