2011-01-26 97 views
0

我碰到過互聯網上的美元符號功能,並決定使用它的JavaScript切換菜單。但是,「$」符號使我的代碼失敗。

這就是我想要的使用方法:

function $() { 
     var elements = new Array(); 
     for (var i = 0; i < arguments.length; i++) { 
      var element = arguments[i]; 
      if (typeof element == 'string') 
       element = document.getElementById(element); 
      if (arguments.length == 1) 
       return element; 
      elements.push(element); 
     } 
     return elements; 
    } 

    function toggle(obj) { 
     var el = $(obj); 
     el.style.display = (el.style.display != 'none' ? 'none' : ''); 
    } 

從該$ 「功能$(){」 似乎打破代碼。你如何聲明這個功能? 如果我用「任何東西」替換$,它可以工作,但不能作爲美元函數...

+0

你還使用jQuery或其他一些JavaScript框架嗎? – 2011-01-26 19:26:01

+0

你能解釋爲什麼你覺得`'''是這個函數的好名字嗎? – ChaosPandion 2011-01-26 19:30:46

回答

7

的美元符號是不是一個標準的JavaScript功能,但它是一個第三方庫的一部分。

有兩個着名的庫以這種方式使用美元符號。

較舊的一個被稱爲Prototype,但目前流行的一個,最有可能是你見過的一個是JQuery

通過在您的HTML頁面中添加一個<script>標籤來使用這兩個庫,以包含庫代碼,之後您可以使用它們的功能。

這兩個庫的大部分功能都包含在它們各自的$()函數中。對於JQuery,如果您想使用它們兩個,則還可以參考$()函數jQuery()以防止名稱空間衝突。我建議在繼續閱讀JQuery之前閱讀--JQuery功能非常強大,並增加了很多功能,但編寫JQuery代碼的編碼風格可能與普通的Javascript完全不同,並且可能需要一點時間才能使用至。這與學習API並找出它可以做什麼完全不同。

要真正回答您的問題 - 如何聲明$作爲函數名稱,我建議查看JQuery源代碼以瞭解它們是如何實現的。不過,我設法生產工作$()功能我第一次嘗試,是這樣的:

var $ = function() {alert('dollar works for me');} 
$(); 

但說實話,我不會那樣做。如果你真的想在其他站點使用$()函數,你需要使用JQuery。它做的不僅僅是包裝document.getElementById()

順便說一下,JQuery和Prototype不是唯一的類似庫。如果你對這種事情感興趣,你可能也想看看MooTools,YUI和其他幾個。

希望有所幫助。

3

$符號是各種javascript框架(原型/ jQuery)的符號。由於用「其他」替換它,所以很可能在該內聯函數和您正在使用的框架之間發生衝突。

本身的符號和功能是正確的,如下例所示。

打開一個新標籤/窗口,在地址欄上輸入此:

javascript:eval("function $() { alert('hi'); } $();");