2011-01-26 96 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'); } $();");