2011-05-27 23 views
3

下面提到的示例代碼是Keith Wood的jQuery Countdown插件的一部分。有一些可以解釋這個

_attachCountdown: function(target, options) { 
     var $target = $(target); 
     if ($target.hasClass(this.markerClassName)) { 
      return; 
     } 
     $target.addClass(this.markerClassName); 
     var inst = {options: $.extend({}, options), 
      _periods: [0, 0, 0, 0, 0, 0, 0]}; 
     $.data(target, PROP_NAME, inst); 
     this._changeCountdown(target); 
    } 

是否有一個具體定義$目標的原因或它與我們的簡單變量,如var目標相同。

在此先感謝。

回答

6

這是一個簡單的變量,$只是添加到向代碼閱讀器表明一個jQuery集合存儲在裏面。 Javascript對變量名稱相當「寬鬆」,$沒有什麼特別的含義(與每個變量名稱前需要PHP的地方相反)。

此方法(var $target=$(target);)用來保存$(target)的結果(jQuery的集合本身,存儲target)轉換成可變的,所以收集的jQuery不需要被創建每次它是需要的。

2

JavaScript中的$對變量名稱有效,對其功能沒有意義。

原作者可能會保存兩個按鍵(或四個,如果您包括shift)併爲了方便而對其重命名,但保留$前綴以表示它是一個jQuery包裝的對象。 (你可以把它像老Hungarian Notation傳真。)

+1

不像速度那麼方便。 'target'可以是一個選擇器,在這種情況下執行選擇器四次並不是最理想的。更好地運行選擇器一次並緩存它。保存擊鍵是次要的。 – Amadan 2011-05-27 20:25:10

+0

@Amadan:雖然你所說的是非常真實的,但當你發現這種情況時,通常是懶惰而不是效率(效率通常是偶然發生的情況)。 ;-) - **編輯:**雖然,我想通過'$ t'使用'$ target',你可能是對的,它是預期的目的。 – 2011-05-27 20:27:41

1

通過下面的代碼:

var $target = $(target); 

腳本的作者分配給下面的變量:

$target 

以下的結果表達:

$(target) 

這是的結果函數($()只是它的別名)正在通過target變量。

所以,總結一下,你在這裏是什麼:

  • target JS變量(可能是一些字符串確定選擇器),
  • $ JS功能(基本上jQuery功能,但$別名經常用於編寫短碼),
  • 存儲所述$(target)(或jQuery(target))表達式的結果$target JS可變