2014-07-25 21 views
1

我正在測試如何擴展jquery選擇器。我實際上並沒有得到什麼是什麼,它做了什麼,所以我決定創建一個小代碼,以查看我的自我。我有這個當擴展jQuery選擇器時,什麼是「s」

//html part 
<div id="one">scott</div> 
<div id="two">scottpilgrim</div> 
<div id="three">scottpilgrimvs</div> 
<div id="four">scottpilgrimvstheworld</div> 

//jquery part 
    $.extend($.expr[':'],{ 
     findScott: function(e,i,m,s) { 
      if($(e).text().indexOf(m[3]) > -1){ 
       return $(e); 
       console.log(s); 
      } 
     } 
    }); 

    //make it work once 
    var test =$('div:findScott("vs")'); 

但是當我運行這個時,我在我的Google Chrome控制檯中什麼都看不到。我錯過了什麼?什麼是「s」用於?它包含什麼?它是一個數組嗎?爲什麼我的控制檯是空的?

感謝

編輯

編輯類似下面的代碼後,喬伊諾斯建議

if($(e).text().indexOf(m[3]) > -1){ 
       console.log(s); 
       return $(e); 

      } 

我得到這個是我的控制檯,不能點擊它。這是什麼?由於

enter image description here

+0

,簡單地意味着's'是未定義的。 –

回答

2

雖然喬的答案解釋了爲什麼你沒有看到控制檯中的任何東西。我會嘗試回答標題中的主要問題:

什麼是「S」,延長jQuery選擇

在舊版本的jQuery的時候,第四個參數是一個包含所有元素的集合正在測試,有時被稱爲「堆棧」。在新版本(jQuery 1.x和2.x)中,它不再使用。

當你用不同版本的jQuery運行代碼時,你可以看到不同之處。

if($(e).text().indexOf(m[3]) > -1){ 
    console.log(s); 
    return $(e); 
} 
4

console.log行是return語句之後。它永遠不會執行。

+0

你有很多道理。謝謝。但問題是,我在控制檯中看到了這一點,我無法點擊它。 [請參閱我的問題中的編輯]爲什麼?再次感謝 – user2860857

+0

如果's'是'undefined',那麼顯然它不會用在那個特定的調用中。無法幫到你 - 你可能不得不深入挖掘jQuery源代碼,看看它何時以及如何使用它。 –